数据结构实验报告二
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构实验报告
实验名称:顺序表的操作
指导老师:朱芳
学生姓名:黄泽承
学生学号:12081422
实验日期:2013.3.24
1、实验目的
1)掌握用Visual C++6.0上机调试单链表的基本方法
2)理解链表的基本操作、了解链表的建立和输出
3)掌握链表的插入、删除、合并和归并等实现方法
2、实现内容
1)单链表基本操作的实现。
2)利用链表的基本运行,实现如果在链表A中出现的元素,在链表B中也出现,则在链表A中将该元素删除。
3、代码:
#include
#include
#define LA 5
#define LB 4
struct mark
{
int num;
char name[10];
struct mark *next;
}a[LA],b[LB];
void main()
{
struct mark a[LA]={{1,"NO1"},{2,"NO2"},{3,"NO3"},{4,"NO4"},{5,"NO5"}}; struct mark b[LB]={{3,"NO6"},{5,"NO7"},{6,"NO8"},{7,"NO9"}};
struct mark *heada,*headb,*pa1,*pa2,*pb1;
int i;
heada=a;
headb=b;
printf("链表A:\n");
for (pa1=heada,i=1;i<=LA;i++)
{
if(i pa1->next=a+i; else pa1->next=NULL; printf("%4d%8s\n",pa1->num,pa1->name); if(i pa1=pa1->next; } printf("链表B:\n"); for (pb1=headb,i=1;i<=LB;i++) { if(i==LB) pb1->next=NULL; else pb1->next=b+i; printf("%4d%8s\n",pb1->num,pb1->name); if(i pb1=pb1->next; } pa1=heada; while (pa1!=NULL) { pb1=headb; while((pa1->num != pb1->num) && (pb1->next!=NULL)) {pb1=pb1->next;} if (pa1->num==pb1->num) { if(pa1==heada) heada=pa1->next; else { pa2->next=pa1->next; pa1=pa1->next; } } else {pa2=pa1; pa1=pa1->next; } } printf("最终链表:\n"); pa1=heada; while(pa1!=NULL) { printf("%4d%8s\n",pa1->num,pa1->name); pa1=pa1->next; } } 4、调试与调试数据 5、实验总结: 本次实验代码较短,但对数据的分析要求较高,我也在实践中学习到了很多,获益匪浅。例如对单链表使用更加熟练,也遇见了不同编译器运行导致的结果不同,让我了解了许多。