博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.线性表
阅读量:4561 次
发布时间:2019-06-08

本文共 2401 字,大约阅读时间需要 8 分钟。

1 /*******************************************************************  2  *   > File Name: seqTable.c  3  *   > Author: fly  4  *   > Mail: XXXXXXXX@icode.com  5  *   > Create Time: 2018年06月20日 星期三 09时45分29秒  6  ******************************************************************/  7   8 #include 
9 #include
10 11 #define Size 4 12 13 typedef struct Table 14 { 15 int *head;//声明一个名为head的长度不确定的数组,也叫“动态数组” 16 int length;//记录当前顺序表的长度 17 int size;//记录顺序表分配的存储容量 18 } table; 19 20 table initTable() 21 { 22 table t; 23 t.head = (int*)malloc(Size*sizeof(int)); 24 if(!t.head) 25 { 26 perror("malloc error"); 27 exit(0); 28 } 29 t.length = 0;//空表的长度初始化为0 30 t.size = Size;//空表的初始存储空间为Size 31 return t; 32 } 33 34 //查找函数,其中,elem表示要查找的数据元素的值 35 int selectTable(table t, int elem) 36 { 37 for(int i=0; i<=t.length; i++) 38 { 39 if(t.head[i]==elem) 40 { 41 return i+1; 42 } 43 } 44 45 return -1;//查找失败,返回-1 46 } 47 48 //更改函数,其中,elem为要更改的元素,newElem为新的数据元素 49 table amendTable(table t, int elem, int newElem) 50 { 51 int add = selectTable(t,elem); 52 t.head[add-1]=newElem;//由于返回的是元素在顺序表中位置,所以-1是该元素在数组中的下标 53 return t; 54 } 55 56 //插入函数,其中,elem为插入的元素,add为插入到顺序表的位置 57 table addTable(table t,int elem,int add) 58 { 59 //判断插入本身是否存在问题(如果插入元素位置比整张表的长度+1还大(如果相等,是尾随的情况)) 60 //或者插入的位置本身不存在,程序作为提示并自动退出 61 if(add>t.length+1 || add < 1) 62 { 63 perror("Position error "); 64 return t; 65 } 66 67 //做插入操作时,首先需要看顺序表是否有多余的存储空间提供给插入的元素,如果没有,需要申请 68 if(t.length == t.size) 69 { 70 t.head=(int*)realloc(t.head,(t.size+1)*sizeof(int)); 71 if(!t.head) 72 { 73 perror("realloc error"); 74 return t; 75 } 76 77 t.size+=1; 78 } 79 80 //插入操作,需要将从插入位置开始的后续元素,逐个后移 81 for(int i=t.length-1; i>=add-1; i--) 82 { 83 t.head[i+1]=t.head[i]; 84 } 85 86 //后移完成,直接将所需插入元素,添加到顺序表的相应位置 87 t.head[add-1] = elem; 88 //由于添加了元素,所以长度+1 89 t.length++; 90 return t; 91 } 92 93 table delTable(table t,int add) 94 { 95 if(add > t.length || add < 1) 96 { 97 perror("del position error"); 98 exit(0); 99 }100 101 for(int i=add; i

 

转载于:https://www.cnblogs.com/feige1314/p/9204440.html

你可能感兴趣的文章
大数据等最核心的关键技术:32个算法
查看>>
Maven多模块项目搭建
查看>>
redis列表list
查看>>
雷林鹏分享: C# 简介
查看>>
ORA-12505: TNS: 监听程序当前无法识别连接描述符中所给出的SID等错误解决方法
查看>>
实用类-<Math类常用>
查看>>
构建之法阅读笔记之四
查看>>
10.15习题2
查看>>
Windows Server 2008 R2 备份与恢复详细实例
查看>>
Ubuntu上kubeadm安装Kubernetes集群
查看>>
关于java学习中的一些易错点(基础篇)
查看>>
MFC的多国语言界面的实现
查看>>
四则运算个人项目 最终版
查看>>
java线程系列---java5中的线程池
查看>>
SQL表连接
查看>>
新秀系列C/C++经典问题(四)
查看>>
memset函数具体说明
查看>>
经常使用的android弹出对话框
查看>>
确保新站自身站点设计的合理性的六大注意点
查看>>
1033. 旧键盘打字(20)
查看>>