实验报告专用纸Word格式文档下载.docx

上传人:b****4 文档编号:7813981 上传时间:2023-05-09 格式:DOCX 页数:41 大小:302.36KB
下载 相关 举报
实验报告专用纸Word格式文档下载.docx_第1页
第1页 / 共41页
实验报告专用纸Word格式文档下载.docx_第2页
第2页 / 共41页
实验报告专用纸Word格式文档下载.docx_第3页
第3页 / 共41页
实验报告专用纸Word格式文档下载.docx_第4页
第4页 / 共41页
实验报告专用纸Word格式文档下载.docx_第5页
第5页 / 共41页
实验报告专用纸Word格式文档下载.docx_第6页
第6页 / 共41页
实验报告专用纸Word格式文档下载.docx_第7页
第7页 / 共41页
实验报告专用纸Word格式文档下载.docx_第8页
第8页 / 共41页
实验报告专用纸Word格式文档下载.docx_第9页
第9页 / 共41页
实验报告专用纸Word格式文档下载.docx_第10页
第10页 / 共41页
实验报告专用纸Word格式文档下载.docx_第11页
第11页 / 共41页
实验报告专用纸Word格式文档下载.docx_第12页
第12页 / 共41页
实验报告专用纸Word格式文档下载.docx_第13页
第13页 / 共41页
实验报告专用纸Word格式文档下载.docx_第14页
第14页 / 共41页
实验报告专用纸Word格式文档下载.docx_第15页
第15页 / 共41页
实验报告专用纸Word格式文档下载.docx_第16页
第16页 / 共41页
实验报告专用纸Word格式文档下载.docx_第17页
第17页 / 共41页
实验报告专用纸Word格式文档下载.docx_第18页
第18页 / 共41页
实验报告专用纸Word格式文档下载.docx_第19页
第19页 / 共41页
实验报告专用纸Word格式文档下载.docx_第20页
第20页 / 共41页
亲,该文档总共41页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

实验报告专用纸Word格式文档下载.docx

《实验报告专用纸Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《实验报告专用纸Word格式文档下载.docx(41页珍藏版)》请在冰点文库上搜索。

实验报告专用纸Word格式文档下载.docx

2、实验内容:

(1)、线性表的顺序存储的基本操作;

(2)、线性表的链式存储的基本操作;

(3)、线性表的应用---一元多项式的表示及相加都基本操作。

3、实验步骤与方法:

(1)、采用线性表的链式存储结构;

(2)、用菜单的形式完成线性表链式存储结构的基本操作;

(3)、采用线性表的顺序存储结构;

(4)、用菜单的形式完成线性表顺序存储结构的基本操作;

(5)、运用线性表链式存储结构解决常见实际应用问题;

(6)、运用线性表顺序结构解决常见实际应用问题。

4、实验数据与程序清单:

实验一:

线性表中查找元素位置

#include<

stdio.h>

stdlib.h>

#defineNULL0

#defineOVERFLOW-2

实验室:

   机号:

  实验日期:

年月日

延安大学计算机学院实验报告附页

实验名称

#defineOK1

#defineERROR0

#defineTRUE1

#defineFALSE0

#defineElemTypeint

#defineMAXSIZE100/*此处的宏定义常量表示线性表可能达到的最大长度*/

typedefstruct

{

ElemTypeelem[MAXSIZE];

/*线性表占用的数组空间*/

intlast;

/*记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表置为-1*/

}SeqList;

intLocate(SeqListL,ElemTypee)

{

inti=0;

/*i为扫描计数器,初值为0,即从第一个元素开始比较*/

while((i<

=L.last)&

&

(L.elem[i]!

=e))

i++;

if(i<

=L.last)

return(i+1);

/*若找到值为e的元素,则返回其序号*/

else

return(-1);

/*若没找到,则返回空序号*/

}

voidmain()

SeqListl;

intp,q,r;

inti;

printf("

请输入线性表的长度:

"

);

scanf("

%d"

&

r);

l.last=r-1;

请输入线性表的各元素值:

\n"

for(i=0;

i<

=l.last;

i++)

{

scanf("

l.elem[i]);

}

请输入要查找的元素值:

q);

p=Locate(l,q);

if(p==-1)

printf("

在此线性表中没有该元素!

该元素在线性表中的位置为:

%d\n"

p);

实验二:

线性表中插入元素操作

malloc.h>

intInsList(SeqList*L,inti,ElemTypee)

intk;

if((i<

1)||(i>

L->

last+2))/*首先判断插入位置是否合法*/

插入位置i值不合法"

return(ERROR);

if(L->

last>

=MAXSIZE-1)

表已满无法插入"

for(k=L->

last;

k>

=i-1;

k--)/*为插入元素而移动位置*/

L->

elem[k+1]=L->

elem[k];

L->

elem[i-1]=e;

/*在C语言数组中,第i个元素的下标为i-1*/

last++;

return(OK);

SeqList*l;

l=(SeqList*)malloc(sizeof(SeqList));

l->

last=r-1;

=l->

l->

elem[i]);

请输入要插入的位置:

p);

请输入要插入的元素值:

InsList(l,p,q);

%d"

l->

实验三:

线性表中删除元素操作

intDelList(SeqList*L,inti,ElemType*e)

1)||(i>

last+1))

{

删除位置不合法!

*e=L->

elem[i-1];

/*将删除的元素存放到e所指向的变量中*/

for(k=i;

=L->

k++)

elem[k-1]=L->

/*将后面的元素依次前移*/

last--;

intp,r;

int*q;

l=(SeqList*)malloc(sizeof(SeqList));

q=(int*)malloc(sizeof(int));

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

DelList(l,p,q);

删除的元素值为:

*q);

实验四:

线性表的合并

voidmerge(SeqList*LA,SeqList*LB,SeqList*LC)

inti,j,k;

i=0;

j=0;

k=0;

while(i<

=LA->

last&

j<

=LB->

last)

if(LA->

elem[i]<

elem[j])

{

LC->

elem[k]=LA->

elem[i];

i++;

k++;

}

else

elem[k]=LB->

elem[j];

j++;

last)/*当表LA有剩余元素时,则将表LA余下的元素赋给表LC*/

LC->

i++;

k++;

while(j<

last)/*当表LB有剩余元素时,则将表LB余下的元素赋给表LC*/

elem[k]=LB->

j++;

LC->

last=LA->

last+LB->

last+1;

SeqList*la,*lb,*lc;

intr;

inti;

la=(SeqList*)malloc(sizeof(SeqList));

请输入线性表A的长度:

la->

请输入线性表A的各元素值:

=la->

la->

lb=(SeqList*)malloc(sizeof(SeqList));

请输入线性表B的长度:

lb->

请输入线性表B的各元素值:

=lb->

lb->

lc=(SeqList*)malloc(sizeof(SeqList));

merge(la,lb,lc);

合并后线性表C中的元素为:

=lc->

lc->

实验五:

用头插法建立单链表

#defineElemTypechar

typedefstructNode/*结点类型定义*/

ElemTypedata;

structNode*next;

}Node,*LinkList;

/*LinkList为结构指针类型*/

LinkListCreateFromHead()

LinkListL;

Node*s;

charc;

intflag=1;

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

/*建立头结点*/

next=NULL;

/*建立空的单链表L*/

while(flag)/*flag初值为1,当输入"

$"

时,置flag为0,建表结束*/

c=getchar();

if(c!

='

$'

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

/*建立新结点s*/

s->

data=c;

next=L->

next;

/*将s结点插入表头*/

L->

next=s;

flag=0;

returnL;

LinkListl;

Node*p;

用头插法建立单链表,请输入链表数据,以$结束!

l=CreateFromHead();

p=l->

while(p!

=NULL)

%c\n"

p->

data);

p=p->

实验六:

用尾插法建立单链表

typedefcharElemType;

voidinit_linklist(LinkList*l)/*对单链表进行初始化*/

*l=(LinkList)malloc(sizeof(Node));

(*l)->

voidCreateFromTail(LinkListL)

Node*r,*s;

charc;

intflag=1;

/*设置一个标志,初值为1,当输入"

时,flag为0,建表结束*/

r=L;

/*r指针动态指向链表的当前表尾,以便于做尾插入,其初值指向头结点*/

while(flag)/*循环输入表中元素值,将建立新结点s插入表尾*/

c=getchar();

r->

r=s;

/*将最后一个结点的next链域置为空,表示链表的结束*/

}

}

init_linklist(&

l);

用尾插法建立单链表,请输入链表数据,以$结束!

CreateFromTail(l);

实验七:

查找线性表结点值

Node*Get(LinkListL,inti)

intj;

p=L;

j=0;

/*从头结点开始扫描*/

while((p->

next!

=NULL)&

(j<

i))

/*扫描下一结点*/

/*已扫描结点计数器*/

if(i==j)

returnp;

/*找到了第i个结点*/

else

returnNULL;

/*找不到,i≤0或i>

n*/

请输入链表数据,以$结束!

请输入要查找的结点序号:

j);

p=Get(l,j);

if(p!

该结点的值为:

未找到此结点!

实验八:

判断线性表长度

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

当前位置:首页 > 农林牧渔 > 畜牧兽医

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2