资源描述:
《数据结构实验报告》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、计算机科学与技术学院实验报告课程名称:数据结构专业:计算机科学与技术班级:2011级1班学号:201113137024姓名:镇方权指导老师:邱奕敏20实验一1.实验题目设有两个无头结点的单链表,头指针分别为ha,hb,链中有数据域data,链域next,两链表的数据都按递增序存放,现要求将hb表归到ha表中,且归并后ha仍递增序,归并中ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。2.程序核心代码structLNode{intdata;structLNode*next;};typedefstru
2、ctLNode*LinkList;LinkListUnion(LinkListha,LinkListhb){LinkListhead=(LNode*)malloc(sizeof(LNode));head->next=ha;LNode*pa,*pb,*pTmp;pa=ha->next;pb=hb->next;pTmp=ha;while(pa&&pb){if(pa->datadata){pTmp=pa;pa=pa->next;}elseif(pa->data>pb->data){LNode*Lr=(LNode*)malloc(size
3、of(LNode));Lr->data=pb->data;Lr->next=pa;pTmp->next=Lr;pTmp=Lr;pb=pb->next;}else{20pTmp=pa;pa=pa->next;pb=pb->next;}}if(pa){pTmp->next=pa;}else{while(pb){LNode*Lr=(LNode*)malloc(sizeof(LNode));Lr->data=pb->data;pTmp->next=Lr;pTmp=Lr;pb=pb->next;}pTmp->next=NULL;}free(head)
4、;returnha;}intListInsert(LinkListL,inti,inte){intj=0;LinkListp=L,s;while(p&&jnext;j++;}if(!p
5、
6、j>i-1)return0;s=(LinkList)malloc(sizeof(structLNode));/*生成新结点*/s->data=e;/*插入L中*/s->next=p->next;p->next=s;return1;}intmain(){LinkListha,hb;intn,i;intdata;InitList(&ha)
7、;printf("请输入ha中数据的个数:");20scanf("%d",&n);printf("请依次输入ha中的数据:");for(inti=1;i<=n;i++){scanf("%d",&data);ListInsert(ha,i,data);}printf("ha=");LinkListp=ha->next;while(p){printf("%d",p->data);p=p->next;}printf("");InitList(&hb);printf("请输入hb中数据的个数:");scanf("%d",&n);printf
8、("请依次输入hb中的数据:");for(i=1;i<=n;i++){scanf("%d",&data);ListInsert(hb,i,data);}printf("hb=");p=hb->next;while(p){printf("%d",p->data);p=p->next;}printf("");printf("hb归并到ha后,新的ha=");p=Union(ha,hb)->next;while(p){printf("%d",p->data);p=p->next;}printf("");system("pause");
9、return0;}201.运行结果4.实验总结要注意归并时若ha表中已有的数据若hb中也有,则hb中的数据不归并到ha中,hb的链表在算法中不允许破坏。20实验二1.实验题目结合书上第41页的例子(一元多项式相加),采用链式存储结构,将两个线性链表表示的一元多项式相加,并输出。2.程序核心代码typedefstructLNode{intdata;//存储系数intflag;//存储对应幂数structLNode*next;}LNode;//建立带头结点的单链表,n项多项式voidCreateList(LNode**L,intn){LNode
10、*p;inti=0;*L=(LNode*)malloc(sizeof(LNode));(*L)->next=NULL;for(i=0;i