线性表的顺序表示与链式表示Word格式文档下载.docx

上传人:b****6 文档编号:16366104 上传时间:2022-11-23 格式:DOCX 页数:20 大小:164.07KB
下载 相关 举报
线性表的顺序表示与链式表示Word格式文档下载.docx_第1页
第1页 / 共20页
线性表的顺序表示与链式表示Word格式文档下载.docx_第2页
第2页 / 共20页
线性表的顺序表示与链式表示Word格式文档下载.docx_第3页
第3页 / 共20页
线性表的顺序表示与链式表示Word格式文档下载.docx_第4页
第4页 / 共20页
线性表的顺序表示与链式表示Word格式文档下载.docx_第5页
第5页 / 共20页
点击查看更多>>
下载资源
资源描述

线性表的顺序表示与链式表示Word格式文档下载.docx

《线性表的顺序表示与链式表示Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《线性表的顺序表示与链式表示Word格式文档下载.docx(20页珍藏版)》请在冰豆网上搜索。

线性表的顺序表示与链式表示Word格式文档下载.docx

4.整理并上交实验报告

硬件平台:

普通的PC机

软件平台:

Windows7操作系统

编程环境:

VisualC++6.0

1.分别建立包含10个数据元素的顺序线性表和链式线性表;

2.从键盘输入一个数据元素和插入位置k,将元素插入到线性表中第k(包含0号位置)个位置;

3.从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;

4.能完成查找功能;

5.给出程序及插入、删除前和插入、删除后线性表结果。

算法描述:

1.链式线性表:

定义结构体:

typedefstructLNode

{

ElemTypedata;

structLNode*next;

}LNode,*LinkList;

构造函数——功能:

查找第i个元素并返回

voidGetElem(LinkListL,inti,ElemType*e)

{

LNode*p;

intj=1;

p=L->

next;

while(p&

&

j<

i)

{

p=p->

++j;

}

if(!

p||j>

i)printf("

不存在,查找错误\n"

);

else

*e=p->

data;

}

插入元素

voidListInsert_L(LinkList*L,inti,ElemTypee)

LinkListp=*L,s=NULL;

intj=0;

i-1){p=p->

i-1)printf("

插入位置错误\n"

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

s->

data=e;

next=p->

p->

next=s;

删除元素

voidListDelet_L(LinkList*L,inti,ElemType*e)

LNode*p=*L,*q=NULL;

while(p->

next&

i-1)

(p->

next)||j>

删除位置错误"

q=p->

p->

next=q->

*e=q->

free(q);

 

建立链表输入n个ElemType类型的数

voidCreatList(LinkList*L,intn)

LinkListp=NULL,q=NULL;

inti;

ElemTypem;

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

(*L)->

next=NULL;

p=(LinkList)malloc(sizeof(LNode));

q=p;

scanf("

%d"

&

m);

data=m;

next=p;

for(i=1;

i<

n;

i++)

q->

主函数:

intmain()

LinkListL=NULL;

inti,p=1,m;

ElemTypee;

printf("

请输入15个元素:

"

CreatList(&

L,15);

输出表中的15个元素:

DisList(L);

while(p)

1.插入元素\n"

"

2.删除元素\n"

3.查找元素\n"

4.显示链表\n"

5.退出链表:

\n"

switch(m)

case1:

printf("

请输入要插入的位置:

i);

printf("

请输入要插入的元素值:

scanf("

e);

ListInsert_L(&

L,i,e);

break;

case2:

请输入要删除元素的位置:

i);

ListDelet_L(&

L,i,&

需要删除的元素值为:

%d\n"

e);

case3:

请输入需要查找的位置:

GetElem(L,i,&

该位置的元素值为:

case4:

显示出链表的数为:

DisList(L);

case5:

p=0;

return0;

2.顺序线性表:

typedefstruct

ElemType*elem;

intlength;

intlistsize;

}SqList;

初始化线性表:

StatusInitList_Sq(SqList*L)

L->

elem=(ElemType*)malloc(LIST_INIT_SIZE*sizeof(ElemType));

L->

elem)returnOVERFLOW;

//存储分配失败

length=0;

//空表长度为0

listsize=LIST_INIT_SIZE;

//初始存储容量

returnOK;

向表中插入元素

StatusListInsert_Sq(SqList*L,inti,ElemTypee)

ElemType*q,*p,*newbase;

if(i<

1||i>

length+1)

returnERROR;

if(L->

length>

=L->

listsize)//若当前表长>

=计划表长则开辟新空间

newbase=(ElemType*)realloc(L->

elem,(L->

listsize+LISTINCREMENT)*sizeof(ElemType));

newbase)returnERROR;

elem=newbase;

listsize+=LISTINCREMENT;

q=&

(L->

elem[i-1]);

for(p=&

elem[L->

length-1]);

p>

=q;

p--)*(p+1)=*p;

*q=e;

++L->

length;

删除表中的元素

StatusListDelete_Sq(SqList*L,inti,ElemType*e)

ElemType*p,*q;

length+1)returnERROR;

p=&

*e=*p;

q=(L->

elem+L->

length-1);

for(++p;

p<

p++)*(p-1)=*p;

--L->

查找表中元素

intListFind(SqListL,intk)

returnL.elem[k-1];

SqListLst;

inti,j,n=15,a,k,p=1;

if(InitList_Sq(&

Lst)==OK)

=n;

if(ListInsert_Sq(&

Lst,i,i)!

=OK)break;

线性表中的元素为:

for(i=0;

Lst.length;

%d"

Lst.elem[i]);

4.显示顺序表\n"

5.退出\n"

请选择操作:

j);

switch(j)

请输入要插入的元素:

a);

k);

ListInsert_Sq(&

Lst,k,a);

ListDelete_Sq(&

Lst,k,&

请输入查找元素的位置:

位置为%d的元素为%d\n"

k,ListFind(Lst,k));

1.创建链表,插入,删除,功能。

2.链表的查找,显示,退出,功能。

3.顺序表的创建与插入功能。

4.顺序表的删除,查找,功能。

5.顺序表的显示,退出,功能。

通过这次实验,我更好的掌握了顺序表的链式存储的基本方法,比如链表的初始化,查找,插入,删除等基本函数的调用,以及在链表中对于指针传递地址的应用。

1.链式线性表的源程序:

/*链式线性表*/

#include<

stdio.h>

//带头结点的链表操作

stdlib.h>

#defineERROR0

#defineOK1

#defineOVERFLOW-1

typedefintElemType;

voidGetElem(LinkListL,inti,ElemType*e)//查找第i个元素并返回

voidListInsert_L(LinkList*L,inti,ElemTypee)//插入元素

voidListDelet_L(LinkList*L,inti,ElemType*e)//删除元素

voidCreatList(LinkList*L,intn)//建立链表输入n个ElemType类型的数

voidDisList(LinkListL)

LinkListp=L->

p->

data);

2.顺序线性表的源程序:

/*顺序表线性表*/

conio.h>

#defineTURE1

#defineFAUSE0

#defineINFEASIBLE-1

#defineOVERFLOW-2

#defineLIST_INIT_SIZE15

#defineLISTINCREMENT4

typedefintStatus;

StatusInitList_Sq(SqList*L)//初始化线性表

StatusListInsert_Sq(SqList*L,inti,ElemTypee)//向表中插入元素

StatusListDelete_Sq(SqList*L,inti,ElemType*e)//删除表中的元素

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

当前位置:首页 > 小学教育 > 语文

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

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