电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

线性表及多项式操作VIP免费

线性表及多项式操作_第1页
1/27
线性表及多项式操作_第2页
2/27
线性表及多项式操作_第3页
3/27
实验报告实验名称线性表及多项式的运算指导教师邹志强实验类型验证实验学时2+2实验时间2016.9.16一、实验目的和要求1.掌握线性表的两种基本存储结构及其应用场合:顺序存储和链接存储。2.掌握顺序表和链表的各种基本操作算法。3.理解线性表应用于多项式的实现算法。二、实验环境(实验设备)Dev-C++三、实验原理及内容内容:1.参照程序2.1~程序2.7,编写程序,完成顺序表的初始化、查找、插入、删除、输出、撤销等操作。2.已知代表头节点的单链表的类型定义,参照程序2.8~程序2.14,编写程序,完成带表头节点的单链表的初始化、查找、插入、删除、输出、撤销等操作。3.以第2题所示带表头节点的单链表为例,编写程序实现单链表的逆置操作(原单链表为(a0,a1,...an-1),逆置后为(an-1,an-2,...,a0),要求不引入新的存储空间。)4.以第2题所示带表头节点的单链表为存储结构,编写程序实现将单链表排序成为有序单链表的操作。5.已知带表头节点一元多项式的类型定义,编写程序实现一元多项式的创建、输出、撤销以及两个一元多项式相加和相乘的操作。实验报告三、实验过程及代码等1.顺序表的基本运算顺序表的类型定义:typedefstruct{intn;intmaxLength;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||i>L.n-1)//越界判断returnERROR;*x=L.element[i];returnOK;}顺序表的插入:StatusInsert(SeqList*L,inti,intx){intj;if(i<-1||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(i<0||i>L->n-1)returnERROR;if(!L->n)returnERROR;for(j=i+1;jn;j++)L->element[j-1]=L->element[j];L->n--;returnOK;}顺序表的输出:StatusOutput(SeqListL)//输出{inti;if(!L.n)returnERROR;for(i=0;in=0;L->maxLength=0;free(L->element);}用主函数进行测试:#include#include#defineERROR0#defineOK1intmain(){inti;SeqListlist;Init(&list,10);for(i=0;i<10;i++)Insert(&list,i-1,i);Output(list);printf("\n");Delete(&list,0);Output(list);Destroy(&list);}调用结果:实验报告2.带表头节点单链表的基本运算单链表的类型定义(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;L->n=0;returnOK;}单链表的查找(Find.c):statusFind(headerListL,inti,int*x){Node*p;intj;if(i<0||i>L.n-1)//对i进行越界检查returnERROR;p=L.head;for(j=0;jlink;//从头结点开始查找ai*x=p->element;//通过x返回ai的值returnOK;}单链表的插入(Insert.c):statusInsert(headerList*L,inti,intx){Node*p,*q;intj;if(i<-1||i>L->n-1)returnERROR;p=L->head;for(j=0;j<=i;j++)p=p->link;q=malloc(sizeof(Node));q->element=x;q->link=p->link;p->link=q;L->n++;returnOK;}单链表的删除(Delate.c):statusDelete(headerList*L,inti){intj;Node*p,*q;if(!L->n)returnERROR;if(i<0||i>L->n-1)returnERROR;q=L->head;for(j=0;jlink;p=q->link;//p指向aiq->link=p->link;//从单链表中删除p所指向的结点free(p);//释放p所指结点的存储空间L->n--;returnOK;}单链表的输出(Output.c):statusOutput(headerListL){Node*p;if(!L.n)//判断顺序表是否为空returnERROR;p=L.head->link;while(p){printf("%d",p->element);p=p->link;}returnOK;}单链...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

线性表及多项式操作

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部