一、实验目的
1.掌握单链表的基本操作:插入、删除、查找以及表的合并等运算。
掌握运用C语言上机调试单链表的基本方法。
二、实验任务
,均以单链表作为存储结构。编写算法将A表和B表归并成一个按元素值递减(即非递增有序,允许值相同)排列的线性表C,并要求利用原表(即A表和B表)节点空间存放表C
三、程序流程图
开始
线性表A
线性表B
定义头指针p,q
定义变量指针 r
p->date
<q->date
last->next=p
last->next=q
p->next=s
结束
程序流程图
r=p
last=r
r=p p=p->next
last=A
last->next= NULL
yes
no
四、测试过程及结果
五、总结
1.程序特点:最小化、模块化、while循环。
单链表特点:动态分配内存、必须从已知指针逐一查找数据、通过改变数据间的链接改变顺序。
附录程序清单
#include<>
#include<>
struct node{
int date;
struct node *next;
};
typedefstruct node NODE;
void ADD(NODE *A,NODE *B)
{
NODE *p,*q,*r,*last;
p=A->next;
q=B->next;
last=A;
last->next= NULL;
while(p&&q)
{
if(p->date<q->date)
{
r=p;
p=p->next;
}
else
{
r=q;
q=q->next;
}
r->next=last->next;
last->next=r;
last=r;
}
if(p)
last->next=p;
else
last->next=q;
B->next =NULL;
}
void creatlink1(NODE *A)
{
NODE *s,*p=A;
intnum;
scanf("%d",&num);
while(num!=0)
{
s=(NODE*)malloc(sizeof(NODE));
s->date=num;
p->next=s;
p=s;
scanf("%d",&num);
}
p->next=NULL;
}
void creatlink2(NODE *B)
{
NODE *s,*p=B;
intnum;
scanf("%d",&num);
while(num!=0)
{
s=(NODE*)malloc(sizeof(NODE));
s->date=num;
p->next=s;
p=s;
scanf("%d",&num);
}
p->next=NULL;
}
void revers
数据结构C语言单链表的归并实验报告 来自淘豆网www.taodocs.com转载请标明出处.