[实验一] 顺序表的基本操作 您所在的位置:网站首页 键盘上的基本操作 [实验一] 顺序表的基本操作

[实验一] 顺序表的基本操作

2024-07-10 15:40| 来源: 网络整理| 查看: 265

(1) 从键盘上依次输入21、18、30、75、42、55、99、35、40,创建顺序表,并输出顺序表中的各元素值(自己编写)

(2) 分别在顺序表的第3个位置和第9个位置插入67和10,给出插入成功或失败的信息,并输出顺序表中的各元素值(参考代码)

(3) 查找值为10的元素,找到返回其位序,否则返回0(自己编写)

(4) 查找顺序表中的最大元素值并输出(自己编写)

(5) 对顺序表元素进行就地逆置并输出(自己编写)

(6) 删除顺序表中的第4个数据元素和第7个数据元素,给出删除成功或失败的信息,并输出顺序表中的各元素值(参考代码)

(7) 求顺序表中所有元素的平均值并输出(自己编写)

(8) 先清空顺序表,然后销毁顺序表(自己编写)

思考:如果插入、删除元素的位置是随机输入的,待插入的元素也是随机输入的,程序可以怎么改?

#include #include #include #define ok 1 #define error 0 typedef struct { int a[100]; int length; }sqlist,*p; p creatlist(); int ListDelete(p,int); void ListInsert(p,int,int); int LocateElem(p,int); int MAX(p); void oppsite(p); void average(p); void Clearlist(p); int DestroyList(p); int main () { int e; int i; int j; int i1; int j3; p top; int s; int j1; int j2; top=creatlist(); printf("请输入要在哪个位置插入第一个数(以XX,XX格式输入):"); scanf("%d",&i1); scanf("%d",&j3); ListInsert(top, i1, j3); printf("请输入要在哪个位置插入第二个数(以XX,XX格式输入):"); scanf("%d",&i); scanf("%d",&j); ListInsert(top, i, j); printf("请输入要查找的元素"); scanf("%d",&e); s=LocateElem(top,e); if(s!=0) {printf("查找元素的值位置为:"); printf("%d",s); } else printf("该元素不存在查找失败"); int y=MAX(top); printf("最大元素为:"); printf("%d\n",y); oppsite(top); printf("请输入第一个要删除元素的位置"); scanf("%d",&j1); int k=ListDelete(top,j1); if(k) printf("删除元素成功"); else printf("删除元素失败"); printf("请输入第二个要删除元素的位置"); scanf("%d",&j2); int k1=ListDelete(top,j2); if(k1) printf("删除元素成功"); else printf("删除元素失败"); average(top); Clearlist(top); DestroyList(top); } p creatlist() { p d; int k; d=(p)(malloc(sizeof(sqlist))); printf("你想要从键盘上输入几个数"); scanf("%d",&d->length); if(d->lengtha[k]); } for(k=0;klength;k++) { printf("第%d个数是",k+1); printf("%d\n",d->a[k]); } printf("\n"); return d; } void ListInsert(p top,int i,int j) { if(top->lengthlength>=100) { printf("插入失败,数目过溢"); exit(-1); } if(i>top->length) { printf("插入位置大于数组的最大长度"); exit(-1); } if(ilength-1;k>=i;k--) top->a[k+1]=top->a[k]; top->a[i]=j; ++top->length; for(k=0;klength;k++) { printf("输出第%d个数是:",k+1); printf("%d\n",top->a[k]); } printf("输入成功\n"); } int LocateElem(p top,int e) { int t=0; for(;tlength;t++) if(e==top->a[t]) return t+1; if(top->length==t) return error; } int MAX(p top) { int max=top->a[0]; for(int r=1;rlength;r++) if(maxa[r]) max=top->a[r]; return max; } void oppsite(p top) { int b; for(int k=0;klength/2);k++) {b=top->a[k]; top->a[k]=top->a[top->length-1-k]; top->a[top->length-1-k]=b; } printf("逆序后的元素为\n"); for(int t=0;tlength;t++) printf("%d\n",top->a[t]); } int ListDelete(p top,int i) { if(i>top->length||ia[i-1]; if(j==i&&ilength) { for(;jlength;j++) top->a[j-1]=top->a[j]; --top->length; printf("删除后的剩余元素是:\n"); for(int j=0;jlength;j++) printf("%d\n",top->a[j]); return ok; } } } } void average(p top) { double s=0; for(int j=0;jlength;j++) //printf("%d",top->a[j]); s+=top->a[j]; printf("%lf",s); double b=s/10; printf("顺序表中所有元素的平均数是:"); printf("%lf\n",b); } void Clearlist(p top) { for(int i=0;ilength;i++) top->a[i]=NULL; printf("清除顺序表元素成功"); } int DestroyList(p top) { free(top); /*释放malloc(或calloc、realloc)函数给指针变量分配的内存空间的函数,使用后该指针变量一定要重新指向NULL,防止野指针出现,有效 规避误操作。 */ printf("\n"); printf("该线性表已经被销毁"); exit(-1); return error; }



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有