数据结构作业和答案.docVIP

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
上机实验的问题和要求: 顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及有序表的形成、元素的查找、插入与删除。具体实现要求: 1. 从键盘输入n个整数,产生顺序表,并输入结点值; 2. 将已知的顺序表形成一个有序表(从小到大或从大到小); 3. 从键盘输入1个待查找的整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”; 4. 从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果; #include stdio.h #include stdlib.h typedef int ElemType; struct List { ElemType *list; int size; int MaxSize; }; void TraverseList(struct List *L) { int i; for(i=0;iL-size;i++) printf(%d ,L-list[i]); printf(\n\n); } void againMalloc(struct List *L) { ElemType *p=realloc(L-list,2*L-MaxSize*sizeof(ElemType)); if(!p) { printf(存储空间用完!\n); exit(1); } L-list=p; L-MaxSize=2*L-MaxSize; } void InsertPosList(struct List *L,int pos,ElemType x) { int i; if(pos1 || posL-size+1) exit(1); if(L-size==L-MaxSize) againMalloc(L); for(i=L-size-1;i=pos-1;i--) L-list[i+1]=L-list[i]; L-list[pos-1]=x; L-size++; } void CreateList(struct List *L,int n) { int i; if(n=1) { printf(参数有误!\n); exit(1); } L-list=malloc(n*sizeof(ElemType)); L-MaxSize=n; printf(请输入%d个数:\n,n); for(i=0;in;i++) scanf(%d,L-list[i]); L-size=n; printf(\n); } void OrderList(struct List *L) { int i,j; ElemType t; for(i=0;iL-size-1;i++) for(j=0;jL-size-1-i;j++) if(L-list[j]L-list[j+1]) { t=L-list[j]; L-list[j]=L-list[j+1]; L-list[j+1]=t; } } void CheckList(struct List *L,ElemType x) { int i; for(i=0;iL-size;i++) if(L-list[i]==x) break; if(i==L-size) printf(在线性表中找不到与%d相等的数!\n\n,x); else printf( 元素“%d”在数组存储空间的下标为%d的位置上。\n\n,x,i); } void main() { int m,p,q,k=10; struct List La; CreateList(La,k); printf(第一小题,请输出线性表中的各元素:\n); TraverseList(La); OrderList(La); printf(第二小题,请输入经排序后的线性表中的元素:\n); TraverseList(La); printf(第三小题,请输入要查找的整数:); scanf(%d,m); CheckList(La,m); printf(第四小题,请输入需要在线性表中插入数的位置和数值:); scanf(%d,%d,p,q); InsertPosList(La,p,q); printf(在第%d个元素位置插入%d后,线性表为:\n,p,q); TraverseList(La); } 1.建立带头结点的单链表; 2.输出带头结点的单链表; 3.将单链表逆序

文档评论(0)

ktj823 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档