线性表归并实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
五、实验总结和思考:(填写收获和体会,分析成功或失败的原因)
收获:凡事只要经过了自己的实践,才能发现问题,后才能想办法去解决它,才能有新的收获和启发,并获取更多的知识。
同时,只有多写代码才能熟悉它们,在不断的练习中去获取经验,以后遇到相关或是类似的问题才知道该怎样做或是怎样处理!
问题:容易犯格式等细节上的错误,并且调试时自己不易发现。
所以,写代码是应注意细节,避免不该犯的错误
附件:(源代码)
/*
本程序实现以下功能:
1.从键盘输入一组整数,建立带头结点的非递增有序单向链表La;
2.从键盘输入一组整数,建立带头结点的非递增有序单向链表Lb;
3.建一有序链表L,将归并后的数据放于此链表中;
*/
#include "conio.h"
#include "alloc.h"
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define ENDFLAG 0
typedef int ElemType;
typedef struct{
ElemType *elem;
int length;
int listsize;
}SqList;
void InitList(SqList *L)
{
L->elem=(ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!L->elem)
{
printf("\n\tOut of space.");
getch();
exit(-2);
}
L->length=0;
L->listsize=LIST_INIT_SIZE;
}
void Merge (SqList La,SqList Lb,SqList *Lc)
{
ElemType *pa,*pb,*pc,*pa_last,*pb_last;
pa=La.elem;
pb=Lb.elem;
Lc->listsize=Lc->length=La.length+Lb.length;
pc=Lc->elem=(ElemType *)malloc(Lc->length*sizeof(ElemType));
if(!Lc->elem)
{
printf("\n\nOut of space.\n");
getch();
exit(-2);
}
pa_last=La.elem+La.length-1;
pb_last=Lb.elem+Lb.length-1;
while(pa<=pa_last&&pb<=pb_last)
{
if(*pa<=*pb) *pc++=*pa++;
else *pc++=*pb++;
}
while(pa<=pa_last) *pc++=*pa++;
while(pb<=pb_last) *pc++=*pb++;
}
void shuru(SqList *L)
{
ElemType x,*newbase;
scanf("%d",&x);
while(x!=ENDFLAG)
{
if(L->length>=L->listsize) /* full */
{
newbase=(ElemType*)realloc(L->elem,(L->listsize+LISTINC
REMENT)*sizeof(ElemType));
if(!newbase)
{
printf("\n\tOut of space.");
getch();
exit();
}
L->elem=newbase;
L->listsize+=LISTINCREMENT;
}
L->elem[L->length++]=x;
scanf("%d",&x);
}
}
void main()
{
SqList La,Lb,Lc;
ElemType x;
clrscr();
InitList(&La);
InitList(&Lb);
printf("\n\t\tInput the data of the list La:\n\n\t");
shuru(&La);
printf("\n\t\tInput the data of the list Lb:\n\n\t");
shuru(&Lb);
MergeList(La,Lb,&Lc);
printf("\n\t\tThe result is as the follows:\n\n\t");
for(x=0;x<Lc.length;x++)
printf("%d ",Lc.elem[x]);
getch();
}。