数据结构实验1——顺序表
2015-01-18 20:39
204 查看
<span style="font-size:18px;">#include <stdio.h> #include <stdlib.h> #define M 100 int flag=0; typedef struct Seqlist { int elem[M]; int length; }Seqlist; void menu() { printf("\t顺序表的基本操作实验\t\t\n"); printf("*****************************************\n"); printf("*请选择命令序号(0——7):\t\t*\n"); printf("*1 创建顺序表;\t\t\t\t*\n"); printf("*2 顺序表插入;\t\t\t\t*\n"); printf("*3 顺序表删除;\t\t\t\t*\n"); printf("*4 顺序表长度;\t\t\t\t*\n"); printf("*5 顺序表是否为空;\t\t\t*\n"); printf("*6 顺序表查找;\t\t\t\t*\n"); printf("*7 顺序表输出;\t\t\t\t*\n"); printf("*0 程序退出;\t\t\t\t*\n"); printf("*****************************************\n"); } void Initlist(Seqlist *l) { (*l).length=0; } int Creatlist(Seqlist *l) { int i,n=0; if(l->length>0) { printf("线性表已经存在,不需要再创建!\n"); return 0; } printf("请输入线性表的长度:\n"); while(n<1||n>M) scanf("%d",&n); for(i=0;i<n;i++) scanf("%d",&l->elem[i]); l->length=n; flag=1; return 1; } int Insertlist(Seqlist *l,int i,int e) { int k; if(l->length>=M) printf("空间不足,请补充空间!\n"); else if(i>l->length) printf("插入位置有误!\n"); else { for(k=l->length-1;k>i-1;k--) l->elem[k+1]=l->elem[k]; l->elem[k]=e; l->length++; printf("插入顺序表成功!\n"); } return 1; } int Dellist(Seqlist *l,int i) { int k; if(l->length<i) printf("无法进行删除操作!\n"); else { for(k=i-1;k<l->length-1;k++) l->elem[k]=l->elem[k+1]; l->length--; printf("删除成功!\n"); } return 1; } int Lengthlist(Seqlist l) { if(flag==0) { printf("此表未创建,因此没有长度!\n"); return 0; } else { printf("顺序表的长度为:%d\n",l.length); return 1; } } void Emptylist(Seqlist l) { if(flag==0) printf("顺序表未创建,不能判断是否为空表!\n"); else { if(l.length==0) printf("顺序表为空表!\n"); else printf("顺序表不是空表!\n"); } } void Findlist(Seqlist l,int e) { int i=0; while((l.elem[i++]!=e)&&(i<l.length)); if(i==l.length) printf("顺序表中不存在这个元素!\n"); else printf("所查找的元素在顺序表中的第%d个\n",i); } void Displaylist(Seqlist l) { int i; if(flag==0) printf("顺序表未创建,无法输出!\n"); else if(l.length==0) printf("顺序表为空!\n"); else { for(i=0;i<l.length;i++) { printf("%d\t",l.elem[i]); if(i==5) printf("\n"); } printf("\n"); } } int main() { Seqlist l; int i,select,e; Initlist(&l); while(1) { menu(); printf("请输入命令号:(0——7):\n"); scanf("%d",&select); switch(select) { case 1: Creatlist(&l); break; case 2: if(flag==0) printf("顺序表未创建,不能插入!\n"); else { printf("请输入要插入的位置:\n"); scanf("%d",&i); printf("请输入要插入的数据:\n"); scanf("%d",&e); Insertlist(&l,i,e); } break; case 3: if(flag==0) printf("顺序表未创建,不能删除!\n"); else { printf("请输入要删除的位置:\n"); scanf("%d",&i); Dellist(&l,i); } break; case 4: Lengthlist(l);break; case 5: Emptylist(l);break; case 6: if(flag==0) printf("顺序表未创建,不能进行查找!\n"); else { printf("请输入要查找的元素值:\n"); scanf("%d",&e); Findlist(l,e); } break; case 7: Displaylist(l);break; case 0: exit(1);break; default : printf("输入命令有错!请重新输入:\n"); break; } } return 0; }</span>
相关文章推荐
- 数据结构实验一:基于线性表的学生信息管理(顺序结构)
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之查找六:顺序查找(sdut_3378)
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验1_顺序表的操作
- SDUTOJ 2116 数据结构实验之链表一:顺序建立链表
- 【2116】数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 【2116】数据结构实验之链表一:顺序建立链表
- 山东理工大学oj【2116】数据结构实验之链表一:顺序建立链表
- 数据结构实验之查找六:顺序查找
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之链表一:顺序建立链表
- 数据结构实验之查找六:顺序查找
- SDUT 2116 数据结构实验之链表一:顺序建立链表