- 1、本文档共24页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PAGE 22
实 验 报 告
实验名称
线性表及多项式的运算
指导教师
邹志强
实验类型
验证
实验学时
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.顺序表的基本运算
顺序表的类型定义:
typedef struct
{
int n;
int maxLength;
int *element;
}SeqList;
顺序表的初始化:
typedef int Status;
Status Init(SeqList *L,int mSize)
{
L-maxLength=mSize;
L-n=0;
L-element=(int*)malloc(sizeof(Status)*mSize);
if(!L-element) // 判断顺序表是否申请成功
return ERROR;
return OK;
}
顺序表的查找
Status Find(SeqList L,int i,int *x)
{
if(i0||iL.n-1) //越界判断
return ERROR;
*x=L.element[i];
return OK;
}
顺序表的插入:
Status Insert(SeqList *L,int i,int x)
{
int j;
if(i-1||iL-n-1)
return ERROR;
if(L-n==L-maxLength)
return ERROR;
for(j=L-n-1;ji;j--)
L-element[j+1]=L-element[j];
L-element[i+1]=x;
L-n++;
return OK;
}
顺序表的删除:
Status Delete(SeqList *L,int i)
{
int j;
if (i0||iL-n-1)
return ERROR;
if(!L-n)
return ERROR;
for(j=i+1;jL-n;j++)
L-element[j-1]=L-element[j];
L-n--;
return OK;
}
顺序表的输出:
Status Output(SeqList L)//输出
{
int i;
if(!L.n)
return ERROR;
for(i=0;iL.n;i++)
printf(%d ,L.element[i]);
return OK;
}
顺序表的析构:
void Destroy(SeqList *L)
{
L-n=0;
L-maxLength=0;
free(L-element);
}
用主函数进行测试:
#include stdio.h
#include stdlib.h
#define ERROR 0
#define OK 1
int main()
{
int i;
SeqList list;
Init(list,10);
for(i=0;i10;i++)
Insert(list,i-1,i);
Output(list);
printf(\n);
Delete(list,0);
Output(list);
Destroy(list);
}
调用结果:
实 验 报 告
带表头节点单链表的基本运算
单链表的类型定义(struct.h):
typedef struct Node
{
int element; //结点的数据域
struct Node *link; //结点的指针域
}Node;
typedef struct
{
str
文档评论(0)