资源描述:
《线性表及多项式操作》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验报告实验名称线性表及多项式的运算指导教师邹志强实验类型验证实验学时2+2实验时间2016.9.16一、实验目的和要求1.掌握线性表的两种基本存储结构及其应用场合:顺序存储和链接存储。2.掌握顺序表和链表的各种基本操作算法。3.理解线性表应用于多项式的实现算法。二、实验环境(实验设备)Dev-C++24三、实验原理及内容内容:1.参照程序2.1~程序2.7,编写程序,完成顺序表的初始化、查找、插入、删除、输出、撤销等操作。2.已知代表头节点的单链表的类型定义,参照程序2.8~程序2.14,编写程序,完成带表头节点的单链表的初始化、查找、
2、插入、删除、输出、撤销等操作。3.以第2题所示带表头节点的单链表为例,编写程序实现单链表的逆置操作(原单链表为(a0,a1,...an-1),逆置后为(an-1,an-2,...,a0),要求不引入新的存储空间。)4.以第2题所示带表头节点的单链表为存储结构,编写程序实现将单链表排序成为有序单链表的操作。5.已知带表头节点一元多项式的类型定义,编写程序实现一元多项式的创建、输出、撤销以及两个一元多项式相加和相乘的操作。实验报告24三、实验过程及代码等1.顺序表的基本运算顺序表的类型定义:typedefstruct{intn;intmaxL
3、ength;int*element;}SeqList;顺序表的初始化:typedefintStatus;StatusInit(SeqList*L,intmSize){L->maxLength=mSize;L->n=0;L->element=(int*)malloc(sizeof(Status)*mSize);if(!L->element)//判断顺序表是否申请成功returnERROR;returnOK;}顺序表的查找StatusFind(SeqListL,inti,int*x){if(i<0
4、
5、i>L.n-1)//越界判断returnE
6、RROR;24*x=L.element[i];returnOK;}顺序表的插入:StatusInsert(SeqList*L,inti,intx){intj;if(i<-1
7、
8、i>L->n-1)returnERROR;if(L->n==L->maxLength)returnERROR;for(j=L->n-1;j>i;j--)L->element[j+1]=L->element[j];L->element[i+1]=x;L->n++;returnOK;}顺序表的删除:StatusDelete(SeqList*L,inti){intj;if
9、(i<0
10、
11、i>L->n-1)returnERROR;if(!L->n)returnERROR;for(j=i+1;jn;j++)L->element[j-1]=L->element[j];24L->n--;returnOK;}顺序表的输出:StatusOutput(SeqListL)//输出{inti;if(!L.n)returnERROR;for(i=0;in=0;L->m
12、axLength=0;free(L->element);}用主函数进行测试:#include#include#defineERROR0#defineOK1intmain(){24inti;SeqListlist;Init(&list,10);for(i=0;i<10;i++)Insert(&list,i-1,i);Output(list);printf("");Delete(&list,0);Output(list);Destroy(&list);}调用结果:24实验报告2.带表头节点单链表的基本
13、运算单链表的类型定义(struct.h):typedefstructNode{intelement;//结点的数据域structNode*link;//结点的指针域}Node;typedefstruct{structNode*head;intn;}headerList;typedefintstatus;单链表的初始化(Init.c):statusInit(headerList*L){L->head=(Node*)malloc(sizeof(Node));if(!L->head)returnERROR;L->head->link=NULL;
14、L->n=0;returnOK;}单链表的查找(Find.c):statusFind(headerListL,inti,int*x)24{Node*p;intj;if(i<0
15、
16、i>L.n-1