- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
本科生实验报告
实验课程 数据结构与算法分析 学院名称 管理科学学院 专业名称 信息与计算科学 学生姓名 学生学号 指导教师 乐千桤 实验地点 6C402 实验成绩
二〇 一四 年 十 月 二〇 一四 年 十二月
实验一 链表合并
1 实验内容
(1) 创建链表并对其进行输出;
(2) 利用指针实现对两个线形链表的合并,并输出其结果。
2 数据结构与算法描述
1)变量及函数的定义
变量/函数名 类 型 说 明 void main () 主函数main() 实现初始化操作,完成对子函数的调用
Node*MergeSList 子函数 定义一个指针函数,返回值类型为NODE类型的一个指针 Node*CreatList() 子函数 创建链表 void outlin(Node *h) 子函数 输出链表的值 2)程序流程图
3 实验数据与实验结果(可用文字描述或贴图的方式进行说明)
1)测试数据
x1= 1 2 3
x2=2 3 5 7
2)实验结果
图1 链表合并的运行结果
4 程序代码清单
#includestdio.h
#includemalloc.h
typedef struct Node{ //定义一个Node的结构体
int data;
Node *next; //*next表示指向链表的后一个元素
}Node;
Node *s,*p;
Node *MergeSList(Node *head1,Node *head2)//定义一个指针函数,返回值类型为NODE类型的一个指针
{
Node *p1=NULL;
Node *p2=NULL;
Node *pcur;
Node *head=NULL;//用于保存Merge之后的链表;
// head=NULL;
if(head1-next-datahead2-next-data)//找到两个链表的两个第一个节点中更小的一个节点
{
head=head1;
p1=head1-next;
p2=head2-next;
}
else
{
head=head2;
p1=head1-next;
p2=head2-next;
}
pcur=head;
while(p1!=NULLp2!=NULL)//遍历两个链表并比较,把更小的值接在pcur后,pcur只是一个临时链表
{
if(p1-datap2-data)
{
pcur-next=p1;
pcur=p1;
p1=p1-next;
}
else if(p1-datap2-data)// {
pcur-next=p2;
pcur=p2;
p2=p2-next;
}
else if(p1-data==p2-data)//如果存在相同,则删除节点
{
p2=p2-next;
}
}
////////////////////////////////////////////////////////////////////////////////
/*循环之后,两个链表要么为都为空,要么其中一个不为空,因为结束循环的条件有限制*/
if(p1!=NULL)//把剩余的节点再接在pcur后
pcur-next=p1;
if(p2!=NULL)
pcur-next=p2;
return head;
}
Node *CreatList()
{
int x;
Node *headcur;
headcur=(Node*)malloc(sizeof(Node));
p=headcur;
printf(x=);
scanf(%d,x);
while(x!=-999)//输入-999代表结束输入
{
s=(Node*)malloc(sizeof(Node));
s-data=x;
s-next=NULL;
p-next=s;
p=s; //把s的地址赋给P的下一个,再把s的地址给p
scanf(%d,x);
}
return headcur;
}
void outlin(Node *h)//输出链表的值
{
Node *p;
p=h-next;
printf(Merged :\n);
while(p!=NULL)
{
printf(%d ,p-data);
p=p-next;
}
prin
您可能关注的文档
最近下载
- 日语入门第一课(课件).ppt VIP
- 心内科进修汇报ppt.pptx
- 2014年10月自考《英语一》讲义-Unit-11-(含课文、生词表、课后练习及答案).doc VIP
- 7.2各民族谁也离不开谁教学设计.docx VIP
- 七年级生物上册 第二单元 第二章 第四节 单细胞生物教案课件 .ppt VIP
- 《条形统计图》教学设计.docx VIP
- 2014年10月自考《英语一》讲义-Unit-09-(含课文、生词表、课后练习及答案).doc VIP
- 部编版语文六年级上册夏天里的成长 第2课时-优课件.ppt VIP
- 浙江省台州市玉环市2023-2024学年六年级上学期期末科学试卷.docx VIP
- Python金融数据分析与应用课件 第5章 数据建模:有监督学习.pptx VIP
文档评论(0)