当前位置: 首页 > news >正文

c语言描述简单的线性表,获取元素,删除元素,

 1 //定义线性表
 2 #define MAXSIZE 20
 3 typedef int ElemType;
 4 typedef  struct 
 5 {
 6         ElemType data[MAXSIZE];  //这是数组的长度,从0开始,也就是最大长度 
 7         int length;              //这是线性表的长度,表示线性表已经存储了多少个元素 
 8          
 9 }SqList;
10 /*
11 ************************** 
12 **************************
13 */
14 
15 
16 
17 //返回线性表L的元素  
18 typedef int Status;
19 Status GetElem1 (SqList L,int i,ElemType *e)
20 {
21      if (L.length==0 || i<i || i>L.length) 
22                      return -1;   
23                      
24          *e = L.data[i-1];
25          return 0; 
26 }
27 
28 
29 
30 
31       
32 /*
33 ************************** 
34 **************************
35 */     
36 
37 
38 //元素插入线性表
39 Status ListInsert (SqList *L,int i,ElemType e)
40 {
41      int k;
42      if (L->length == MAXSIZE)    //表示线性表的最大长度已经等于数组的长度,线性表已经满 
43           return -1;      
44           
45      if(i < 1 || i > L->length+1)    //表示要插入的位置i 不在线性表的范围
46          return -1;
47     
48      if (i <= L->length)      //若要插入的位置不在线性表的尾端 
49         for (k = L->length - 1;k >= i-1 ;k--)     //就是插入位置后面的元素一个个往后面挪出一个位置,先是线性表最后一个元素挪 
50                L->data[k+1] = L->data[k];
51                
52      L->data[i-1] = e; // 插入的i是相对于线性表来说的下标从1开始,data是数组,下标从0开始,所以辅助到i-1上  
53      L->length++;    //表示线性表的长度加上1 
54      return 0; 
55 }      
56 
57 
58 /*
59 ************************** 
60 **************************
61 */
62 
63 //元素删除 
64 Status ListDelete(SqList *L,int i,ElemType *e)
65 {
66       int k;
67       if (L->length ==0)    //判断线性表是否为空 
68         return -1;
69       if (i>L->length || i<1)   //判断要删除的元素是否在线性表中 
70         return -1;
71       *e = L->data [i-1];    //先把数组的数组拿出来赋值给e 
72       
73       if (i< L->length) 
74             for (k=i;k<L->length;k++)   //直接把药删除的元素后面的元素直接往前移动 
75                L->data[k-1]=L->data[k];   
76     
77          L ->length --;      //最后一步是把线性表的长度减去1 数组的长度不用减,英文已经用maxsize定义了。 
78     
79  } 
80  
81  
82  int main()
83  {
84      return 0;
85  }
86       
87        

   简单的线性表增删,本人是菜鸟,有什么问题请评论,我真的希望大家能给点指点,谁也是从菜鸟开始的,

   做技术的没有什么好嘲笑的,技术的东西是永远学不完的,日新月异。

   技术靠一点一点积累的,大牛也是這样,

   希望我也能加油。

转载于:https://www.cnblogs.com/biyongyao/p/5449813.html

相关文章:

  • 用两个栈实现一个队列
  • 将C#文档注释生成.chm帮助文档
  • 【VS开发】CListCtrl控件使用方法总结
  • python之路之正则表达式
  • 水平方向瀑布流
  • log4j配置概要
  • [Assignment] C++1
  • linux之GDB常用命令汇总
  • uva1368DNA consensus string统计
  • static关键字的使用总结
  • 设计模式学习-原型模式
  • Centos 基础开发环境搭建之Maven私服nexus
  • HDU 2098 分拆素数和
  • 设计模式——9.装饰模式
  • unable to start the virtual device;Genymotion启动安卓模拟器出错
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • android 一些 utils
  • express如何解决request entity too large问题
  • Go 语言编译器的 //go: 详解
  • miniui datagrid 的客户端分页解决方案 - CS结合
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • 电商搜索引擎的架构设计和性能优化
  • 分布式任务队列Celery
  • 关于Android中设置闹钟的相对比较完善的解决方案
  • 关于Flux,Vuex,Redux的思考
  • 记录一下第一次使用npm
  • 力扣(LeetCode)22
  • 一个项目push到多个远程Git仓库
  • ​二进制运算符:(与运算)、|(或运算)、~(取反运算)、^(异或运算)、位移运算符​
  • (06)Hive——正则表达式
  • (二)学习JVM —— 垃圾回收机制
  • (二十三)Flask之高频面试点
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (剑指Offer)面试题41:和为s的连续正数序列
  • (免费分享)基于springboot,vue疗养中心管理系统
  • (三)elasticsearch 源码之启动流程分析
  • (四)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (转)平衡树
  • .NET设计模式(7):创建型模式专题总结(Creational Pattern)
  • .net中的Queue和Stack
  • .pyc文件是什么?
  • /etc/sudoers (root权限管理)
  • @column注解_MyBatis注解开发 -MyBatis(15)
  • [ 隧道技术 ] 反弹shell的集中常见方式(四)python反弹shell
  • [ 英语 ] 马斯克抱水槽“入主”推特总部中那句 Let that sink in 到底是什么梗?
  • [ 转载 ] SharePoint 资料
  • [Angular] 笔记 7:模块
  • [AutoSar]BSW_OS 02 Autosar OS_STACK
  • [C++]指针与结构体
  • [CareerCup] 13.1 Print Last K Lines 打印最后K行
  • [codeforces] 25E Test || hash
  • [DevEpxress]GridControl 显示Gif动画
  • [hive] posexplode函数
  • [IE编程] 如何编程清除IE缓存
  • [IE编程] 如何设置IE8的WebBrowser控件(MSHTML) 的渲染模式