数据结构实验报告 单链表

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

信息学院

数据结构实验报告

学号:姓名:班级:

课程名称:数据结构实验名称:用单链表存储集合的元素,变成实现求解两个集合的并和交。

实验性质:①综合性实验√②设计性实验③验证性实验实验时间:2017.10 试验地点:

本实验所用设备:PC及VS2010

【数据结构】:

typedef struct Node

{

int num;

Node *next;

}Node,*LinkNode;

【算法思想】:

以单链表实现两表的交集与并集操作

【算法描述】:

bool LinkSameNum(LinkNode head, int x)//判断是否有相同的数

{

LinkNode p = head->next;

while (p)

{

if (p->num == x)

return true;

p = p->next;

}

return false;

}

void Creat(LinkNode &head, int n)//头插法建立链表

{

head = (LinkNode)malloc(sizeof(Node));

head->next = NULL;

LinkNode s;

int x;

for (int i = 0; i < n; i++)

{

x = rand() % 90 + 10;

if (LinkSameNum(head, x))//如果有相同的重新来过

{

i--;

continue;

}

s = (LinkNode)malloc(sizeof(Node));

s->num = x;

s->next = head->next;

head->next = s;

}

}

LinkNode JiaoJi(LinkNode head1, LinkNode head2)

{

LinkNode head=(LinkNode)malloc(sizeof(Node));

LinkNode tail=head;

tail->next = NULL;

LinkNode s,p1=head1->next, p2 = head2->next;

while (p1)

{

while (p2)

{

if (p2->num == p1->num)

{

s = (LinkNode)malloc(sizeof(Node));

s->num = p1->num;

s->next = NULL;

tail->next = s;

tail = s;

break;

}

p2 = p2->next;

}

p1 = p1->next;

p2 = head2->next;

}

return head;

}

LinkNode BingJi(LinkNode head1, LinkNode head2)

{

LinkNode head = (LinkNode)malloc(sizeof(Node));

head->next = NULL;

LinkNode tail = head;

LinkNode LinkJiaoji = JiaoJi(head1, head2);

LinkNode s, p1 = head1->next, p2 = head2->next,p3=LinkJiaoji->next;

while (p1)

{

s = (LinkNode)malloc(sizeof(Node));

s->num = p1->num;

s->next = tail->next;

tail->next = s;

tail = s;

p1 = p1->next;

}

while(p2)

{

while (p3)

{

if (p2->num == p3->num)

break;

p3 = p3->next;

}

if(!p3)

{

s = (LinkNode)malloc(sizeof(Node));

s->num = p2->num;

s->next = tail->next;

tail->next = s;

tail = s;

}

p3 = LinkJiaoji->next;

p2 = p2->next;

}

return head;

}

LinkNode ChaJi(LinkNode head1, LinkNode head2)

{

LinkNode head = (LinkNode)malloc(sizeof(Node));

head->next = NULL;

LinkNode tail = head;

LinkNode LinkJiaoji = JiaoJi(head1, head2);

LinkNode s, p1 = head1->next, p3 = LinkJiaoji->next;

while (p1)

{

相关文档
最新文档