数据结构与算法实验报告线性表.docx

上传人:b****3 文档编号:27421902 上传时间:2023-06-30 格式:DOCX 页数:24 大小:55.28KB
下载 相关 举报
数据结构与算法实验报告线性表.docx_第1页
第1页 / 共24页
数据结构与算法实验报告线性表.docx_第2页
第2页 / 共24页
数据结构与算法实验报告线性表.docx_第3页
第3页 / 共24页
数据结构与算法实验报告线性表.docx_第4页
第4页 / 共24页
数据结构与算法实验报告线性表.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

数据结构与算法实验报告线性表.docx

《数据结构与算法实验报告线性表.docx》由会员分享,可在线阅读,更多相关《数据结构与算法实验报告线性表.docx(24页珍藏版)》请在冰豆网上搜索。

数据结构与算法实验报告线性表.docx

数据结构与算法实验报告线性表

一、实验目的

1、深刻理解线性结构的特点以及线性表的概念。

2、熟练掌握线性表的顺序存储结构、链式存储结构及基本运算算法的实现,特别是查找、插入和删除等算法。

二、实验环境

1)硬件:

每个学生需配备计算机一台,操作系统:

Windows2000/XP。

2)软件:

visualc++6.0。

三、实验题目和实验内容

实验题目:

线性表的顺序、链式表示及其应用

实验内容:

1、基本题:

实验2.1、实验2.2、实验2.4、实验2.7

2、附加题:

实验2.3、实验2.6(没做)

四、实验数据和实验结果

2.1

a,b,c,d,e

 

2.2

a,b,c,d,e

2.4

a,b,c,d,e

2.7

第一个多项式:

2x+6x^2-4x^3+3x^4第二个多项式1x-3x^2+6x^3-3x^4

五、附录(程序代码)

2.1

#include

#include

#defineMaxSize50

typedefstruct

{

chardata[MaxSize];

intlength;

}SqList;

voidCreateList(SqList*&L,chara[],intn)

{

inti;

L=(SqList*)malloc(sizeof(SqList));

for(i=0;i

L->data[i]=a[i];

L->length=n;

}

voidInitList(SqList*&L)

{

L=(SqList*)malloc(sizeof(SqList));

L->length=0;

}

voidDestroyList(SqList*&L)

{

free(L);

}

intListEmpty(SqList*L)

{

return(L->length==0);

}

intListLength(SqList*L)

{

return(L->length);

}

voidDispList(SqList*L)

{

inti;

for(i=0;ilength;i++)

cout<data[i];

cout<

}

charGetElem(SqList*L,inti,char&e)

{

if(i<1||i>L->length)

return0;

e=L->data[i-1];

returne;

}

intLocateElem(SqList*L,chare)

{

inti=0;

while(ilength&&L->data[i]!

=e)

i++;

if(i>=L->length)

return0;

else

returni+1;

}

intListInsert(SqList*&L,inti,chare)

{

intj;

if(i<1||i>L->length+1)

return0;

i--;

for(j=L->length;j>i;j--)

L->data[j]=L->data[j-1];

L->data[i]=e;

L->length++;

return1;

}

intListDelete(SqList*&L,inti,char&e)

{

intj;

if(i<1||i>L->length)

return0;

i--;

e=L->data[i];

for(j=i;jlength-1;j++)

L->length--;

return1;

}

voidmain()

{

SqList*p;

charb[10],e;

intk;

cout<<"元素个数:

";

cin>>k;

cout<<"输入元素:

";

for(intm=0;m

cin>>b[m];

InitList(p);

CreateList(p,b,k);

cout<<"输出顺序表:

";

DispList(p);

cout<<"顺序表长度是:

"<

if(ListEmpty(p))

cout<<"顺序表为空"<

else

cout<<"顺序表不为空"<

cout<<"顺序表第3位元素是:

"<

cout<<"元素a的位置是:

第"<

ListInsert(p,4,'f');

cout<<"在第4个元素上插入元素f:

";

DispList(p);

cout<<"删除顺序表第3个元素:

";

ListDelete(p,3,e);

DispList(p);

DestroyList(p);

}

 

2.2

#include

#include

typedefstructLNode

{

chardata;

structLNode*next;

}LinkList;

voidCreateListR(LinkList*&L,chara[],intn)

{

LinkList*s,*r;

inti;

L=(LinkList*)malloc(sizeof(LinkList));

r=L;

for(i=0;i

{

s=(LinkList*)malloc(sizeof(LinkList));

s->data=a[i];

r->next=s;

r=s;

}

r->next=NULL;

}

voidInitList(LinkList*&L)

{

L=(LinkList*)malloc(sizeof(LinkList));

L->next=NULL;

}

voidDestroyList(LinkList*&L)

{

LinkList*pre=L,*p=pre->next;

while(p)

{

free(pre);

pre=p;

p=pre->next;

}

free(pre);

}

intListEmpty(LinkList*L)

{

return(L->next==NULL);

}

intListLength(LinkList*L)

{

intn=0;

LinkList*p=L;

while(p->next)

{

n++;

p=p->next;

}

return(n);

}

voidDispList(LinkList*L)

{

LinkList*p=L->next;

while(p)

{

cout<data;

p=p->next;

}

cout<

}

charGetElem(LinkList*L,inti,char&e)

{

intj=0;

LinkList*p=L;

while(j

=NULL)

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

e=p->data;

returne;

}

}

intLocateElem(LinkList*L,chare)

{

inti=1;

LinkList*p=L->next;

while(p&&p->data!

=e)

{

p=p->next;

i++;

}

if(!

p)

return(0);

else

return(i);

}

intListInsert(LinkList*&L,inti,chare)

{

intj=0;

LinkList*p=L,*s;

while(j

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

s=(LinkList*)malloc(sizeof(LinkList));

s->data=e;

s->next=p->next;

p->next=s;

return1;

}

}

intListDelete(LinkList*&L,inti,char&e)

{

intj=0;

LinkList*p=L,*q;

while(j

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

q=p->next;

if(!

q)

return0;

e=q->data;

p->next=q->next;

free(q);

return1;

}

}

voidmain()

{

LinkList*h;

charb[10],e;

intk;

cout<<"元素个数:

";

cin>>k;

cout<<"输入元素:

";

for(intm=0;m

cin>>b[m];

InitList(h);

CreateListR(h,b,k);

cout<<"输出单链表:

";

DispList(h);

cout<<"单链表长度是:

"<

if(ListEmpty(h))

cout<<"单链表为空"<

else

cout<<"单链表不为空"<

cout<<"单链表第3位元素是:

"<

cout<<"元素a的位置是:

第"<

ListInsert(h,4,'f');

cout<<"在第4个元素上插入元素f:

";

DispList(h);

cout<<"删除单链表第3个元素:

";

ListDelete(h,3,e);

DispList(h);

DestroyList(h);

}

 

2.4

#include

#include

typedefstructLNode

{

chardata;

structLNode*next;

}LinkList;

voidCreateListR(LinkList*&L,chara[],intn)

{

LinkList*s,*r;

inti;

L=(LinkList*)malloc(sizeof(LinkList));

r=L;

for(i=0;i

{

s=(LinkList*)malloc(sizeof(LinkList));

s->data=a[i];

r->next=s;

r=s;

}

r->next=L;

}

voidInitList(LinkList*&L)

{

L=(LinkList*)malloc(sizeof(LinkList));

L->next=NULL;

}

voidDestroyList(LinkList*&L)

{

LinkList*pre=L->next,*p=pre->next;

L->next=NULL;

while(p)

{

free(pre);

pre=p;

p=pre->next;

}

free(pre);

}

intListEmpty(LinkList*L)

{

return(L->next==NULL);

}

intListLength(LinkList*L)

{

intn=0;

LinkList*p=L;

while(p->next!

=L&&p->next)

{

n++;

p=p->next;

}

return(n);

}

voidDispList(LinkList*L)

{

LinkList*p=L->next;

while(p!

=L&&p)

{

cout<data;

p=p->next;

}

cout<

}

charGetElem(LinkList*L,inti,char&e)

{

intj=1;

LinkList*p=L->next;

while(j

=L&&p)

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

e=p->data;

returne;

}

}

intLocateElem(LinkList*L,chare)

{

inti=1;

LinkList*p=L->next;

while(p!

=L&&p->data!

=e&&p)

{

p=p->next;

i++;

}

if(!

p)

return(0);

else

return(i);

}

intListInsert(LinkList*&L,inti,chare)

{

intj=1;

LinkList*p=L->next,*s;

while(j

=L)

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

s=(LinkList*)malloc(sizeof(LinkList));

s->data=e;

s->next=p->next;

p->next=s;

return1;

}

}

intListDelete(LinkList*&L,inti,char&e)

{

intj=1;

LinkList*p=L->next,*q;

while(j

=L)

{

j++;

p=p->next;

}

if(!

p)

return0;

else

{

q=p->next;

if(!

q||q==L->next)

return0;

e=q->data;

p->next=q->next;

free(q);

return1;

}

}

voidmain()

{

LinkList*h;

charb[10],e;

intk;

cout<<"元素个数:

";

cin>>k;

cout<<"输入元素:

";

for(intm=0;m

cin>>b[m];

InitList(h);

CreateListR(h,b,k);

cout<<"输出循环单链表:

";

DispList(h);

cout<<"循环单链表长度是:

"<

if(ListEmpty(h))

cout<<"循环单链表为空"<

else

cout<<"循环单链表不为空"<

cout<<"循环单链表第3位元素是:

"<

cout<<"元素a的位置是:

第"<

ListInsert(h,4,'f');

cout<<"在第4个元素上插入元素f:

";

DispList(h);

cout<<"删除循环单链表第3个元素:

";

ListDelete(h,3,e);

DispList(h);

DestroyList(h);

}

2.7

#include

#include

typedefstructpolynomial

{

intcoef;//系数

intindex;//指数

structpolynomial*next;

}LinkList;

voidCreateList(LinkList*&L,intn)

{

LinkList*s,*r;

inti;

L=(LinkList*)malloc(sizeof(LinkList));

r=L;

for(i=0;i

{

s=(LinkList*)malloc(sizeof(LinkList));

cout<<"依次输入多项式系数和指数:

";

cin>>s->coef>>s->index;

s->next=NULL;

r->next=s;

r=s;

}

}

voidInitList(LinkList*&L)

{

L=(LinkList*)malloc(sizeof(LinkList));

L->next=NULL;

}

voidAddList(LinkList*&list1,LinkList*&list2,intm,intn)

{

LinkList*s,*r,*t;

inti;

s=list1->next;

r=list2->next;

t=list1;

for(i=0;i

{

if(s==NULL)

{

s=list1->next;

t=list1;

}

while(s!

=NULL)

{

if(s->index!

=r->index)

{

s=s->next;

t=t->next;

}

elsebreak;

}

if(!

s)

{

s=(LinkList*)malloc(sizeof(LinkList));

s->coef=r->coef;

s->index=r->index;

s->next=NULL;

t->next=s;

s=s->next;

r=r->next;

continue;

}

else

{

if(s->index==r->index)

s->coef=s->coef+r->coef;

if(s->coef==0)

{

LinkList*temp1;

temp1=s;

s=s->next;

t->next=s;

deletetemp1;

}

}

r=r->next;

s=NULL;

}

cout<<"多项式相加的结果是:

";

list1=list1->next;

while(list1)

{

cout<coef<<"x^"<index;

if(list1->next!

=NULL)

cout<<"+";

list1=list1->next;

}

}

voidDispList(LinkList*L)

{

L=L->next;

while(L)

{

cout<coef<<"x^"<index;

if(L->next!

=NULL)

if(L->next->coef>0)

cout<<"+";

L=L->next;

}

}

voidmain()

{

LinkList*list1,*list2;

InitList(list1);

InitList(list2);

intm,n;

cout<<"请输入第一个多项式的项数:

";

cin>>m;

CreateList(list1,m);

cout<<"多项式表示是:

";

DispList(list1);

cout<

cout<<"请输入第二个多项式的项数:

";

cin>>n;

CreateList(list2,n);

cout<<"多项式表示是:

";

DispList(list2);

cout<

AddList(list1,list2,m,n);

cout<

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 中考

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1