数据结构实验报告_第1页
数据结构实验报告_第2页
数据结构实验报告_第3页
数据结构实验报告_第4页
数据结构实验报告_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、云南大学数据结构实验报告第 四 次实验学号:姓名: 一、实验目的 复习线性表的逻辑结构,存储结构及基本操作;掌握顺序表和(带头结点)单链表;了解有序表。二、实验内容 (必做题)假设有序表中数据元素类型是整型,请采用顺序表或(带头结点)单链表实现: OrderInsert(&L,e,int(*compare)()/根据有序判定函数compare,在有序表L的适当位置插入元素e; 利用OrderInsert()构造有序表; OrderMerge(&La,&Lb,&Lc,int(*compare)()/根据有序判定函数compare,将两个有序表La和Lb归并为一个有序表Lc。 (选做题)请采用(带

2、头结点)单链表实现: 升幂多项式的构造,即各个结点存储各项系数与指数,并且链表按指数升序有序;约定系数不能等于0,指数不能小于0) 两个升幂多项式的相加。三、算法描述(采用自然语言描述)分别插入第一个链表和第二个链表的数据;根据有序判定函数compare,将两个有序表La和Lb归并为一个有序表。输出归并后的有序表。四、详细设计(画出程序流程图) 开始输入数据输出归并后的有序表结束将两个有序表归并为一个有序表五、程序代码(给出必要注释)1.#include #include typedef struct LNodeint date; struct LNode *next; LNode,*Link

3、;/-线性表的单链表存储结构typedef struct LinkListLink head;/指向线性链表中的头结点 int len;/指示链表中数据元素的个数 LinkList;int compare (LinkList *L,int e)int Lc=0; Link p; p=L-head; p=p-next; while(p!=NULL)if(ep-date)p=p-next; Lc+; else return Lc; return Lc;/-有序判定函数comparevoid OrderInsert (LinkList *L,int e,int (*compare)()Link te

4、mp,p,q; int Lc,i; temp=(Link)malloc(sizeof(LNode); temp-date=e; p=q=L-head; p=p-next; Lc=(*compare)(L,e); if(Lc=L-len)while(q-next!=NULL)q=q-next; q-next=temp; temp-next=NULL;elsefor(i=0; inext;q=q-next; q-next=temp;temp-next=p; +L-len;/-利用OrderInsert()构造有序表;根据有序判定函数compare,在有序表L的适当位置插入元素e;void Orde

5、rMerge (LinkList *La,LinkList *Lb,int (*compare)()int i,Lc=0; Link temp,p,q; q=La-head-next; while(q!=NULL)p=Lb-head; temp=(Link)malloc(sizeof(LNode); temp-date=q-date; Lc=(*compare)(Lb,q-date); if(Lc=Lb-len)while(p-next!=NULL)p=p-next; p-next=temp; temp-next=NULL;elsefor(i=0; inext; temp-next=p-nex

6、t; p-next=temp; q=q-next; +Lb-len;/根据有序判定函数compare,将两个有序表La和Lb归并为一个有序表LinkList *Initialize (LinkList *NewList)int i; Link temp; NewList=(LinkList *)malloc(2+1)*sizeof(LinkList); for(i=0; idate=0; temp-next=NULL; (NewList+i)-head=temp; (NewList+i)-len=0;return NewList;void Insert (LinkList *NewList)i

7、nt a,i; char c; printf(在第1个表中插入数据,以空格和回车为间隔,输入“.”对下个表插入数据n); for(i=0; i2; i+)while(1)scanf(%d,&a);c=getchar();if(c=.)if(ihead-next; while(p!=NULL)printf(%dt,p-date); p=p-next;void Display (LinkList *NewList,void (*Show)()printf(所有有序表如下:n); printf(第一个有序表为:); (*Show)(NewList+0); printf(n); printf(第二个有序表为:); (*Show)(NewList+1); printf(n); printf(归并后有序表为:n); (*Show)(NewList+2);int main()LinkList *NewList=NULL; int i; printf(t开始插入数据!n数据与“.”不要输入在同一行!n); NewList=Initialize(NewList); Insert(NewList); for(i=0; i2; i+)OrderMerge (NewList+i,Ne

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论