资源描述:
《数据结构作业及答案.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、上机实验的问题和要求:顺序表的查找、插入与删除。设计算法,实现线性结构上的顺序表的产生以及有序表的形成、元素的查找、插入与删除。具体实现要求:1.从键盘输入n个整数,产生顺序表,并输入结点值;2.将已知的顺序表形成一个有序表(从小到大或从大到小);3.从键盘输入1个待查找的整数,在顺序表中查找该结点的位置。若找到,输出结点的位置;若找不到,则显示“找不到”;4.从键盘输入2个整数,一个表示欲插入的位置i,另一个表示欲插入的数值x,将x插入在对应位置上,输出顺序表所有结点值,观察输出结果;#include#includetypedefintElemTy
2、pe;structList{ElemType*list;intsize;intMaxSize;};voidTraverseList(structList*L){inti;for(i=0;isize;i++)printf("%d",L->list[i]);printf("");}voidagainMalloc(structList*L){ElemType*p=realloc(L->list,2*L->MaxSize*sizeof(ElemType));if(!p){printf("存储空间用完!");exit(1);}L->list=p;L->MaxSize=2*L->
3、MaxSize;}voidInsertPosList(structList*L,intpos,ElemTypex){inti;if(pos<1
4、
5、pos>L->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++;}voidCreateList(structList*L,intn){inti;if(n<=1){printf("参数有误!");exit(1);}L->list=
6、malloc(n*sizeof(ElemType));L->MaxSize=n;printf("请输入%d个数:",n);for(i=0;ilist[i]);L->size=n;printf("");}voidOrderList(structList*L){inti,j;ElemTypet;for(i=0;isize-1;i++)for(j=0;jsize-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+
7、1]=t;}}voidCheckList(structList*L,ElemTypex){inti;for(i=0;isize;i++)if(L->list[i]==x)break;if(i==L->size)printf("在线性表中找不到与%d相等的数!",x);elseprintf("元素“%d”在数组存储空间的下标为%d的位置上。",x,i);}voidmain(){intm,p,q,k=10;structListLa;CreateList(&La,k);printf("第一小题,请输出线性表中的各元素:");TraverseList(&La);Ord
8、erList(&La);printf("第二小题,请输入经排序后的线性表中的元素:");TraverseList(&La);printf("第三小题,请输入要查找的整数:");scanf("%d",&m);CheckList(&La,m);printf("第四小题,请输入需要在线性表中插入数的位置和数值:");scanf("%d,%d",&p,&q);InsertPosList(&La,p,q);printf("在第%d个元素位置插入%d后,线性表为:",p,q);TraverseList(&La);}1.建立带头结点的单链表;2.输出带头结点的单链表;3.将单链表逆序链接,假定
9、仍使用原有结点;4.以选择法对单链表进行排序;5.在主函数实现对上述四个函数的调用,输出运行结果。#include#includetypedefintElemType;structsNode{ElemTypedata;structsNode*next;};voidCreateHeadList(structsNode**HL,intpos){structsNode*p,*q,*h;inti;h=p