实验一
课程名称:有序链表的合并 班级:嵌入式2班
姓名:张燕 实验名称:线性表的基本
操作
完成日期:10月7日
指导教师:王群芳
实验成绩:
学号:72 实验序号:
一、实验目的及要求
熟练掌握线性表的基本操作在两种存储结构上的实现,其中以链表的操作和应用作为重点内容。
二、实验环境
硬件:计算机 软件:Microsoft Visual C++
三、实验内容
以单链表作存储结构,实现有序表的合并。 四、源程序清单:
#include<> #include<>
typedef struct lnode{ int data;
struct lnode *next; }lnode,*linklist;
void list_create(linklist &L,int sort) {
int i,n,data; linklist last,p;
L=(linklist)malloc(sizeof(lnode)); last=L;
last->next=NULL;
printf(\请输入第%d链表长度:\ scanf(\
printf(\输入线性表中的元素:\ for(i=1;i<=n;i++) {
p=(linklist)malloc(sizeof(lnode));
scanf(\
1
last->next=p; last=p; }
last->next=NULL; } //list_create
void list_marge(linklist &la,linklist &lb,linklist &lc) {
linklist pa,pb,pc;
pc=lc=la; while(pa&&pb) }
pc->next=pa; pc->next=pb;
if(pa->data<=pb->data) { } else { }
pc->next=pb;pc=pb;pb=pb->next; pc->next=pa;pc=pa;pa=pa->next;
pa=la->next;pb=lb->next; {
if(pa) else free(pb); } //list_marge
void print(linklist List) {
linklist p; p=List->next; while(p) {
printf(\
2
p=p->next; }
printf(\ }//print_list
int main() {
linklist L1,L2,L3; list_create(L1,1); list_create(L2,2); printf(\合并前:\\n\ print(L1); print(L2);
printf(\合并后:\\n\ list_marge(L1,L2,L3);
}
五、实验结果:
print(L3); return 0;
六、总结:
通过本次对有序链表合并程序的设计,我清楚地认识到了以数据结构为基础程序设计的设计方法,其中了解到了用顺序表和单链表作为存储结构的优点和不足,学到了用不同方法来设计程序的各种不同的操作;但在实验设计的具体操作中我仍然存在着各种错误,特别是对有序表的合并操作、各种限制条件的问题以及分配存储空间、结点的指向不能很好的掌握;在今后的学习中,我会多读些程序
3
《数据结构》实验报告题1



