数据结构【顺序表】(可运行)
#include <stdio.h> #include <malloc.h> #include <stdlib.h> #define MAXSIZE 100 #define OK 1 #define Error 0 int yes=0; typedef struct { int elem[MAXSIZE]; int length; }Seqlist; void menu() { printf("\t\t\t顺序表基本操作实验\t\t\t\n"); printf("*********************************************************\n"); printf("*请选择命令序号(0-7):\t\t\t*\n"); printf("*1 创建顺序表;\t\t\t\t\t*\n"); printf("*2 顺序表插入;\t\t\t\t\t*\n"); printf("*3 顺序表删除;\t\t\t\t\t*\n"); printf("*4 顺序表长度输出;\t\t\t\t\t*\n"); printf("*5 顺序表是否为空;\t\t\t\t\t*\n"); printf("*6 顺序表查找元素;\t\t\t\t\t*\n"); printf("*7 顺序表输出;\t\t\t\t\t*\n"); printf("*0 程序退出;\t\t\t\t\t*\n"); printf("********************************************************\n"); } void Initlist(Seqlist *l) { l->length; } int Creatlist(Seqlist *l) { int i,n; if(l->length>0) { printf("线性表已经存在,不需要再创建!\n"); return Error; } printf("请输入顺序表的长度:\n"); scanf("%d",&n); printf("请输入顺序表的元素(整型数):\n"); for(i=0;i<n;i++) scanf("%d",&(l->elem[i])); l->length=n; yes=1; return OK; } int Inslist(Seqlist *l,int i,int e)/*顺序表插入元素操作*/ { int k; if(l->length>MAXSIZE) printf("空间不足,请补充空间!\n"); else { for(k=l->length-1;k>=i-1;k--) l->elem[k+1]=l->elem[k]; l->elem[i-1]=e; l->length++; printf("插入成功!\n"); } return OK; } int Dellist(Seqlist *l,int i) { int k; for(k=i-1;k<l->length;k++) l->elem[k]=l->elem[k+1]; l->length--; printf("删除成功!\n"); return OK; } int Lengthlist(Seqlist *l) { if(yes==0) { printf("此时表未创建!因而没有长度!\n"); return OK; } else printf("此时线性表的长度为%d\n",l->length); return OK; } void Emptylist(Seqlist *l) { if(yes==0) printf("此时表未创建!不能判断是否为空!\n"); else { if(l->length==0) printf("此时顺序表为空表!\n"); else printf("此时顺序表为非空表!\n",l->length); } } void Findlist(Seqlist *l,int e)/*按值查找元素,若找到,返回顺序表中序号;否则返回错误信息*/ { int i=0; while((l->elem[i]!=e)&&(i<l->length)) { i++; } if(i==l->length) printf("顺序表中不存在这个元素!\n"); else printf("所查找到得元素位置是第%d个!\n",i+1); } void Dislist(Seqlist *l)/*输出顺序表*/ { int i; if(l->length == 0) printf("此时线性表为空!\n"); else { printf("此时的线性表是:\n"); for(i=0;i<l->length;i++) printf("%d\t",l->elem[i]); printf("\n"); } } int main(void) { Seqlist L; int i,sel,e,n; Initlist(&L); while(1) { menu(); printf("请输入命令号(0----7):\n"); scanf("%d",&sel); switch(sel) { case 1:Creatlist(&L);break; case 2:if(yes==0) { printf("此时表未创建!不能插入元素!\n"); break; } else { printf("请输入要插入的位置:\n"); scanf("%d",&i); printf("请输入要插入的值:\n"); scanf("%d",&e); Inslist(&L,i,e); break; } case 3:if(yes==0) { printf("此时表未创建!不能删除元素!\n");\ break; } else { printf("请输入要删除位置:\n"); scanf("%d",&i); Dellist(&L,i); break; } case 4:Lengthlist(&L);break; case 5:Emptylist(&L);break; case 6:if(yes==0) { printf("此时表未创建!不能查找元素!\n"); break; } else { printf("请输入要查找的元素!不能输出线性表!\n"); scanf("%d",&n); Findlist(&L,n); break; } case 7:if(yes==0) { printf("此时表未创建!不能输出线性表!\n"); break; } else { Dislist(&L); break; } case 0:exit(1);break; default: printf("输入命令错误!请重新输入:\n"); break; } } return OK; }
一个二次元的生物

浙公网安备 33010602011771号