通过C语言调用函数的方式来实现线性表的基本操作.doc
下载提示(请认真阅读)1.请仔细阅读文档,确保文档完整性,对于不预览、不比对内容而直接下载带来的问题本站不予受理。
2.下载的文档,不会出现我们的网址水印。
3、该文档所得收入(下载+内容+预览)归上传者、原创作者;如果您是本文档原作者,请点此认领!既往收益都归您。
文档包含非法信息?点此举报后获取现金奖励!
下载文档到电脑,查找使用更方便
9.9
积分
还剩页未读,继续阅读
关 键 词:通过C语言调用函数的方式来实现线性表的基本操作
通过C语言调用函数的方式来实现线性表的基本操作.doc
通过C 语言调用函数的方式来实现线性表的基本操作
线性表基本操作函数
线性表的操作
资源描述:
实验
项目
一.请通过C语言调用函数的方式来实现线性表的基本操作:
1. 创建、初始化 线性表
2. 事先给定e, 返回其位序
3. 事先给定e,删除e
4. 有序表中, 插入e
5. 销毁线性表
二.(1)用带头结点的单链表表示多项式,表中每一个结点表示多项式中的一项 ;(2) 一元多项式简单计算器的基本功能为: 输入并建立多项式;输出多项式;两个多项式相减。(多项式的各项以指数形式输出)
所属
课程
算法与数据结构
实验
目的
通过本实验,基本掌握线性表的逻辑结构、存储结构及其建立、插入、删除等基本操作。通过相关算法的C语言实现,并考虑线性表在多项式运算中的应用。
实
验
内
容
(一)请通过C语言调用函数的方式来实现线性表的基本操作:
1. 创建、初始化 线性表
2. 事先给定e, 返回其位序
3. 事先给定e,删除e
4. 有序表中, 插入e
5. 销毁线性表
注意:通过适当的例子加以调试说明。
(二)设计一个一元多项式简单的计算器。
要求: (1)用带头结点的单链表表示多项式,表中每
一个结点表示多项式中的一项 ;(2) 一元多项式简单计算器的基本功能为: 输入并建立多项式;输出多项式;两个多项式相减。(多项式的各项以指数形式输出)
实
验
过
程
及
结
果
#include#include#define List_Init_Size 100
#define Listincrement 10
#define OVERFLOW 0
#define OK 1
#define ERROR 0
typedef int ElemType;
typedef int status;
typedef struct{
ElemType *elem;
int length;
int listlize;
}sqList;
status InitList(sqList *L){
L->elem=(ElemType*)malloc(List_Init_Size*sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->length=0;
L->listlize=List_Init_Size;
return OK;
}
status LocateElemList(sqList *L,ElemType e)
{
int i=0;
while(ilength&&(L->elem[i]!=e))++i;
if(ilength)
return i+1;
else return 0;
}
status DeleteList(sqList *L,ElemType i)
{
ElemType e;
ElemType *p,*q;
if((i<1)||(i>L->length))return ERROR;
p=&(L->elem[i-1]);
e=*p;
q=L->elem+L->length-1;
for(++p;p<=q;++p)
*(p-1)=*p;
--L->length;
return e;
}
status InsertList(sqList *L,int i,ElemType e)
{
ElemType *p,*q;
if((i<1)||(i>L->length))return ERROR;
if(L->length>=L->listlize)
{
L->elem=(ElemType*)realloc(L->elem,(L->listlize+ Listincrement)*sizeof(ElemType));
if(!L->elem)exit(OVERFLOW);
L->listlize+=Listincrement;
}
q=&(L->elem[i-1]);
for(p=&L->elem[L->length-1];p>=q;--p);
*(p+1)=*p;
*q=e;
++L->length;
return OK;
}
status DestoryList(sqList *L){
free(L);
return OK;
}
void main()
{
int i,l,e;
sqList a;
InitList(&a);
printf("Please input array 5 number:");
for(i=0;i<5;i++)
scanf("%d",&a.elem[i]);
a.length=i;
printf("please input a number to be located:");
scanf("%d",&e);
l=LocateElemList(&a,e);
if(l==0)
printf("the element %d does not in the list.\n",e);
else
printf("the element %d is the %dth in the list\n",e,l);
printf("Input the Insert data:");
scanf("%d",&e);
printf("Input the Insert locate:");
scanf("%d",&i);
if(InsertList(&a,i,e))
{
printf("output the datas:");
for(i=0;i<5;i++)
printf("%d ",a.elem[i]);
}
else
printf("Can't insert the data!");
printf("\nInput the delete element:");
scanf("%d",&i);
if(DeleteList( &a,e))
printf("delete succeed!\n");
else
printf("Can't find the delete data!\n");
DestoryList(&a);
getch();
}
#includetypedef struct polynode
{
int coef;
int exp;
struct polynode *next;
}node;
node *create()
{
node *h,*r,*s;
int c,e;
h=(node*)malloc(sizeof(node));
r=h;
printf("coef:");
scanf("%d",&c);
printf("exp: ");
scanf("%d",&e);
while(c!=0)
{
s=(node*)malloc(sizeof(node));
s->coef=c;
s->exp=e;
r->next=s;
r=s;
printf("coef:");
scanf("%d",&c);
printf("exp: ");
scanf("%d",&e);
}
r->next=NULL;
return(h);
}
void print(node *p)
{
while(p->next!=NULL)
{
p=p->next;
printf(" %d*x^%d",p->coef,p->exp);
}
}
void polyadd(node *ha, node *hb)
{
node *p,*q,*pre,*temp;
int sum;
p=ha->next;
q=hb->next;
pre=ha;
while(p!=NULL&&q!=NULL)
{
if(p->expexp)
{
pre->next=p;
pre=pre->next;
p=p->next;
}
else if(p->exp==q->exp)
{
sum=p->coef-q->coef;
if(sum!=0)
{
p->coef=sum;
pre->next=p;pre=pre->next;p=p->next;
temp=q;q=q->next;free(temp);
}
else
{
temp=p->next;free(p);p=temp;
temp=q->next;free(q);q=temp;
}
}
else
{
pre->next=q;
pre=pre->next;
q=q->next;
}
}
if(p!=NULL)
pre->next=p;
else
pre->next=q;
}
void multipoly(node *ha,node *hb)
{ node *p,*q,*n,*m;
p=ha->next;
n=(node*)malloc(sizeof(node));
n->next=NULL;
while(p!=NULL)
{ m=(node*)malloc(sizeof(node));
for(q=hb->next;q;q=q->next)
{ m->coef=p->coef*q->coef;
m->exp=p->exp+q->exp;
m->next=NULL;
}
p=p->next;
polyadd(n,m);
}
print(n);
}
void main()
{
node *ha,*hb;
printf("input ha de xishu zhishu :\n");
ha=create();
print(ha);
printf("\n");
printf("input hb de xishu zhishu :\n");
hb=create();
print(hb);
printf("\n");
printf("cha shi :\n");
polyadd(ha,hb);
print(ha);
printf("\n");
multipoly(ha,hb);
}
总
结
很难,要多练习。
教师
评语
展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
关于本文
本文标题:通过C语言调用函数的方式来实现线性表的基本操作.doc
链接地址:https://www.renrendoc.com/p-18394168.html