实验一
课程名称:有序链表的合并 班级:嵌入式2班
姓名:张燕
实验名称:线性表的基本操作
一、实验目的及要求
熟练掌握线性表的基本操作在两种存储结构上的实现,其中以链表的操作和应用作为重点内容。
二、实验环境
硬件:计算机 软件:Microsoft Visual C++
完成日期:10月7日 指导教师:王群芳
实验成绩:
学号:1010431072
实验序号:
三、实验内容
以单链表作存储结构,实现有序表的合并。
四、源程序清单: #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(\"%d\ printf(\"输入线性表中的元素:\"); for(i=1;i<=n;i++) { p=(linklist)malloc(sizeof(lnode)); scanf(\"%d\ last->next=p; 1 last=p; } last->next=NULL; } //list_create void list_marge(linklist &la,linklist &lb,linklist &lc) { linklist pa,pb,pc; pc=lc=la; pa=la->next;pb=lb->next; while(pa&&pb) } if(pa->data<=pb->data) { } else { } pc->next=pb;pc=pb;pb=pb->next; pc->next=pa;pc=pa;pa=pa->next; { if(pa) pc->next=pa; else pc->next=pb; free(pb); } //list_marge void print(linklist List) { linklist p; p=List->next; while(p) { printf(\"%d \ p=p->next; 2 } printf(\"\\n\"); }//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 因篇幅问题不能全部显示,请点此查看更多更全内容