数据结构实验报告链表合并停车场问题重点.doc

数据结构实验报告链表合并停车场问题重点.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 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

文档评论(0)

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

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

1亿VIP精品文档

相关文档