数据结构——线性表的顺序存储结构C语言
2018-04-09 21:34
92 查看
线性表顺序存储结构是在存储空间中开辟出一块连续的存储空间用于存放数据。数据之间的关系在逻辑上连续的。即A1-A2-A3......An伪代码
定义在线性表上的操作有,创建,删除,插入,查找,清空等。利用C库函数中的malloc,realloc,free函数可以实现对内存动态的分配。以达到实现线性表的顺序存储结构的目的。C语言实现
菜单编写比较简化,并没实现全部功能。运行实例
阅读更多
typedef struct{ int length; elemtype *data; }list;整型变量length 用于存储当前表长度,即表中数据数量,data指针用于指向,内存中连续的部分,elemtype即为存储的数据类型,可根据实际需要进行修改。
定义在线性表上的操作有,创建,删除,插入,查找,清空等。利用C库函数中的malloc,realloc,free函数可以实现对内存动态的分配。以达到实现线性表的顺序存储结构的目的。C语言实现
#include<stdio.h> #include<malloc.h> #define elemtype int #define maxlength 100 #define addlength 10 #define status int #define ok 1 #define fail 0 typedef struct{ int length; elemtype *data = NULL; }linklist; status initlist(linklist *l) //创建一个空表 { if(l->data != NULL ) return fail; else { l->data = (elemtype*)malloc(maxlength*sizeof(int)); l->length = 0; return ok; } } status insertnode(linklist *l,int i,elemtype e) //插入函数 { int k; if(i<=0 || i>l->length+1) //如果插入位置不连续则失败 return fail; if(l->length == 0 ) { *l->data = e; l->length ++; } else { for(k = l->length-1;k>=i-1;k--) { l->data[k+1] = l->data[k]; } l->data[i-1] = e; l->length++; } return ok; } status clearlist(linklist *l) //清空表 { free(l->data ); l->data = NULL; l->length = 0; return ok; } status getelem(linklist *l,int i,elemtype *e) //查找函数 { int k; if(i<=0||i>l->length) return fail; else { *e = l->data[i-1]; return ok; } } int main() { void fun(); fun(); return ok; } void fun() { int k; int i; elemtype e; linklist l; printf("线性表的顺序存储结构(最大表长100个整数)\n"); printf("---------------------------------------\n\n\n"); printf("0.退出程序"); printf("\n1.创建一个空的线性表"); printf("\n2.插入10个元素"); printf("\n3.查找在第i个位置的元素"); printf("\n4.清空一个线性表\n") ; printf("5.当前表长\n\n"); while(scanf("%d",&i)&&i != 0) { switch(i) { case 1: k=initlist(&l);if(k)printf("\n成功创建!表长为%d 请继续操作\n",l.length);else printf("\n创建失败,请先清空当前表\n");break; case 2: printf("\n请输入元素:");for(k = 0 ;k < 10;k++) { scanf("%d",&e); insertnode(&l,k+1,e); } printf("插入完毕,请继续操作\n");break; case 3: printf("\n请输入查找的位置:");scanf("%d",&i),getelem(&l,i,&e);printf("\n 你的结果是%d 请继续操作\n",e);break; case 4: clearlist(&l);printf("清空完毕,请重新创建线性表\n");break; case 5: printf("当前表长为%d,请继续操作\n",l.length );break; } } }
菜单编写比较简化,并没实现全部功能。运行实例
阅读更多
相关文章推荐
- C语言 数据结构 线性表 单链表 线性表的链式存储结构之一
- 数据结构(线性表):双链表
- 数据结构中链式存储的注意点(线性与栈)
- 数据结构——线性表的实现(增删部分)
- 数据结构之线性表
- 数据结构之线性表的链式存储
- 数据结构之线性表的线性分配动态存储
- 线性表-顺序表、链表类模板的实现(数据结构基础 第2周)
- [数据结构一]线性表:顺序实现
- 数据结构之线性表
- 线性链表---数据结构
- 数据结构之: 线性链表
- 数据结构——线性表(一)线性表的顺序存储和单链表
- 数据结构-线性顺序表操作
- 数据结构之线性表
- 数据结构-线性表(3)
- java数据结构之线性表
- 数据结构之线性结构(单链表)【二】
- 数据结构(一)之线性表
- 数据结构题解: 线性存储 、 链表结构 实现栈功能 --------------进制转换