数据结构实验报告二

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、实验总结:

本次实验代码较短,但对数据的分析要求较高,我也在实践中学习到了很多,获益匪浅。例如对单链表使用更加熟练,也遇见了不同编译器运行导致的结果不同,让我了解了许多。

相关文档
最新文档