2-21实验报告.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2-21实验报告

东莞理工学院计算机学院 2015-2016第1学期算法与数据结构实验报告 姓名:陈映琼 学号:201441404142 题目:设带头结点的单链表L1和L2中分别存放着两个数据元素集合,编写算法判断集合L1是否是L2的子集,即判断集合L1中的数据元素是否都是集合L2中的数据元素。 问题描述:有两个带头结点的单链表L1和L2中分别存放着数据元素集合,判断集合L1是否是集合L2的子集。 模块划分:第一个模块,定义单链表结点的结构体,第二个模块,设计一个函数,创建头结点,第三个模块,编写一个将元素e插入到链表L的第i个位置的函数,第四个模块,编写一个输出带头结点单链表的数据元素的函数,第五个模块,首先编写一个输出带头结点单链表的长度的函数,再编写一个判断集合L1中的数据元素是否都是集合L2中的数据元素,这个函数需调用输出长度的函数,第六个模块,编写main函数,测试代码。 源程序: #includestdio.h #include stdlib.h typedef int Status; typedef int ElemType; #define FALSE 0 #define TRUE 1 typedef struct Node { ElemType data;// 数据域 struct Node* next; }Node,*LinkList; LinkList InitList()//创建头结点 { LinkList L; L = (LinkList)malloc(sizeof(Node)); if(L==NULL) { printf(申请头结点失败!\n); return NULL; } L-next = NULL; return L; } Status ListInsert(LinkList *L,int i,ElemType e)//将元素e插入到链表L的第i个位置 { int j = 1; LinkList p,s; p = *L;//p直接等于链表L,才有头结点 while (p ji) { p = p-next; ++j; } if(!p || j i) return FALSE; s = (LinkList)malloc(sizeof(Node)); s-data = e; s-next = p-next;//这里p-next就是指向位置i p-next = s; return TRUE; } void PrintList(LinkList L) { LinkList p; p = L-next; while (p != NULL) { printf(%d\t,p-data); p = p-next; } printf(\n); } Status Length(LinkList head) { LinkList p = head-next; Status i = 0; while(p != NULL) { i++; p = p-next; } return i; } void Judge(LinkList head1,LinkList head2) { LinkList p1 = head1-next,p2 = head2-next; if(Length(head1) Length(head2)) { printf(集合L1不是集合L2的子集。\n); return; } while(p1 != NULL) { p2 = head2-next; while(1) { if((p2 != NULL)(p1-data != p2-data)) p2 = p2-next; if((p2 != NULL)(p1-data == p2-data)) break; if(p2 == NULL) { printf(集合L1不是集合L2的子集。\n); return; } } p1 = p1-next; } printf(集合L1是集合L2的子集。\n); } int main() { LinkList head1,head2; int len,i,num; head1 = InitList(); head2 = InitList(); printf(请输入集合L1元素的个数。\n); scanf(%d,len); printf(请输入元素:\n); for(i = 1;i = len;i++) { scanf( %d,num)

文档评论(0)

yaobanwd + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档