线性表的链式存储结构设计.doc

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验一:设线性表L1和L2分别代表集合A和B,试设计算法求A和B的并集C,并用线性表L3代表集合C。 实验二:设计一个一元多项式计算器,要求能够:①输入并建立多项式;②输出多项式;③执行两个多项式相加;④执行两个多项式相减。 实验目的:掌握线性表的链式存储结构设计与基本操作的实现。 实验内容与要求: ⑴定义线性表的链式存储表示; ⑵基于所设计的存储结构实现线性表的基本操作; ⑶编写一个主程序对所实现的线性表进行测试; 3.数据结构设计 实验一: 逻辑结构:线性结构 存储结构:链式存储结构 实验二: 逻辑结构:线性结构 存储结构:链式存储结构 4.算法设计 实验一 #includestdio.h #includestdlib.h typedef int datatype; typedef struct node { datatype data; //结点值 struct node *next; //存储下一个结点的地址 }LinkList; LinkList *CREATLISTF(LinkList *L,int n) { int num,i; LinkList *head,*s,*r; head=L; r=head; head-next=NULL; printf(请输入集合中的元素(由小到大):\n); for(i=0;in;i++) { scanf(%d,num); s=(LinkList *)malloc(sizeof(LinkList)); s-data=num; r-next=s; //链接到表中 r=s; //r指向新的尾结点 } r-next=NULL; return head; } LinkList *merge(LinkList *L1,LinkList *L2) { LinkList *L3,*pa,*pb1,*pb2,*pc; L3=(LinkList*)malloc(sizeof(LinkList));//申请结点 L3-next=NULL; //初始化链表L3 pa=L1-next; //pa是链表L1的工作指针,指向第一个结点 pb1=pb2=L2-next; //pb1是链表L2的工作指针,指向第一个结点 pc=L3; //pc是链表L3的工作指针,指向头结点 while(pa pb1) //L1和L2均非空 if(pa-datapb1-data) { //L1中元素插入L3 pc-next=pa; pc=pa; pa=pa-next; } else if(pa-datapb1-data) { //L2中元素插入L3 pc-next=pb1; pc=pb1; pb1=pb1-next; } else { pc-next=pa; pc=pa;pa=pa-next; pb1=pb2=pb1-next; } if(pa) pc-next=pa; //若pa未到尾,将pc指向pa else pc-next=pb1; //若pb1未到尾,将pc指向pb1 return(L3); } void display(LinkList *L) { LinkList *head; head=L-next; do { printf(%d\t,head-data); head=head-next; }while(head!=NULL); } void main() { int an,bn; LinkList *L1,*L2,*L3; L1=(LinkList*)malloc(sizeof(LinkList)); L2=(LinkList*)malloc(sizeof(LinkList)); printf(\n请输入集合A中元素的个数:\n); scanf(%d,an); *L1=*CREATLISTF(L1,an); printf(集合A的元素为:\n); display(L1); printf(\n请输入集合B中元素的个数:\n); scanf(%d,bn); *L2=*CREATLISTF(L2,bn); printf(集合B的元素为:\n); display(L2); L3=merge(L1,L2); printf(交集为:\n); display(L3); } 实验二 typedef struct node { int coef; int exp; struct no

文档评论(0)

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

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

1亿VIP精品文档

相关文档