大数据的结构实验1顺序表链表Word格式.docx
- 文档编号:14141049
- 上传时间:2022-10-19
- 格式:DOCX
- 页数:17
- 大小:271.60KB
大数据的结构实验1顺序表链表Word格式.docx
《大数据的结构实验1顺序表链表Word格式.docx》由会员分享,可在线阅读,更多相关《大数据的结构实验1顺序表链表Word格式.docx(17页珍藏版)》请在冰豆网上搜索。
2)打印/显示(遍历)该线性表(依次打印/显示出表中元素值);
3)在顺序表中查找第i个元素,并返回其值;
4)在顺序表第i个元素之前插入一已知元素;
5)在顺序表中删除第i个元素;
6)求顺序表中所有元素值(整数)之和;
二、链表(带头结点)基本操作实验
数据元素类型ElemType取字符型char。
按照动态单链表结构实现如下算法:
1)按照头插法或尾插法创建一个带头结点的字符型单链表(链表的字符元素从键盘输入),长度限定在10之内;
2)打印(遍历)该链表(依次打印出表中元素值,注意字符的输入顺序与链表的结点顺序);
3)在链表中查找第i个元素,i合法返回元素值,否则,返回FALSE;
4)在链表中查找与一已知字符相同的第一个结点,有则返回TRUE,否则,返回FALSE;
5)在链表中第i个结点之前插入一个新结点;
6)在线性表中删除第i个结点;
7)计算链表的长度。
3实验步骤与源程序
#include<
iostream>
#defineOK1
#defineERROR0
#defineTRUE1
#defineFALSE0
#defineElemTypeint
#defineMAXSIZE25/*此处的宏定义常量表示线性表可能达到的最大长度*/
usingnamespacestd;
typedefstruct
{
ElemTypeelem[MAXSIZE];
/*线性表占用的数组空间*/
intlast;
/*记录线性表中最后一个元素在数组elem[]中的位置(下标值),空表置为-1*/
}SeqList;
voidOutputSeqList(SeqList*L)
{
cout<
<
"
顺序表如下:
endl;
inti;
for(i=0;
i<
=L->
last;
i++)
cout<
L->
elem[i]<
'
\n'
;
}
intGetDate(SeqList*L)
intt;
请输入要查找的元素的序数:
cin>
>
t;
if((t<
0)||(t>
last))
{
输入错误!
return(ERROR);
}
elsereturn(L->
elem[t-1]);
intInsList(SeqList*L)
inti,e;
请输入要插入的元素插入位置及要插入的元素"
i>
e;
intk;
if((i<
1)||(i>
last+2))/*首先判断插入位置是否合法*/
printf("
插入位置i值不合法"
);
if(L->
last>
=MAXSIZE-1)
表已满无法插入"
for(k=L->
k>
=i-1;
k--)/*为插入元素而移动位置*/
L->
elem[k+1]=L->
elem[k];
L->
elem[i-1]=e;
/*在C语言数组中,第i个元素的下标为i-1*/
last++;
return(OK);
intDelList(SeqList*L,ElemType*m)
intw;
请输出要删除的元素位置:
w;
if((w<
1)||(w>
last+1))
{
删除位置不合法!
*m=L->
elem[w-1];
/*将删除的元素存放到e所指向的变量中*/
for(k=w;
k<
k++)
elem[k-1]=L->
/*将后面的元素依次前移*/
last--;
intsum(SeqList*L)
inti,n=0;
last+1;
n=n+L->
elem[i];
return(n);
voidmain()
int*q,n;
SeqList*L;
L=(SeqList*)malloc(sizeof(SeqList));
q=(int*)malloc(sizeof(int));
请输入顺序表长度:
n;
last=n-1;
请输入顺序表:
cin>
charc='
y'
while(c!
='
n'
)
请选择你要进行的操作:
1.输出顺序表;
2.查找元素;
3.插入元素;
4.删除元素;
5.求和"
intxuanze;
xuanze;
switch(xuanze)
case1:
OutputSeqList(L);
break;
case2:
cout<
GetDate(L)<
case3:
InsList(L);
case4:
DelList(L,q);
case5:
sum(L)<
是否要继续进行操作y/n:
c;
#include<
stdio.h>
malloc.h>
#defineMAX15
#defineTURE1
typedefcharElemType;
typedefstructNode
chardate;
structNode*next;
}Node,*LinkList;
voidInitList(LinkList*L)
*L=(LinkList)malloc(sizeof(char));
(*L)->
next=NULL;
voidPrintfLink(LinkListL)
LinkListp;
p=L->
next;
链表为:
while(p!
=NULL)
%c"
p->
date);
p=p->
voidCreate(LinkListL)
LinkLists,r;
charc;
intflag=1;
intn;
r=L;
printf("
元素个数:
scanf("
%d"
&
n);
if(n>
MAX)
超出限定长度!
else
输入字符(以#键结束):
while(flag)
{
scanf("
%c"
c);
if(c!
#'
{
s=(Node*)malloc(sizeof(char));
s->
date=c;
r->
next=s;
r=s;
}
else
flag=0;
r->
next=NULL;
}
voidOrder(LinkListL)
Node*r,*q,*p;
for(r=L->
r->
next!
=NULL;
r=r->
next)
{
p=r;
for(q=r->
q;
q=q->
if((q->
date)<
(p->
date))
p=q;
if(p!
=r)
c=r->
date;
date=p->
p->
}PrintfLink(L);
}
voidGet(LinkListL,inti,ElemType*e)
intj;
Node*p;
p=L;
j=-1;
while((p->
=NULL)&
&
(j<
i))
p=p->
j++;
*e=p->
date;
if(i==j)
第%d个元素为:
i,*e);
else
FALSE"
voidLocate(LinkListL,ElemTypee)
inti=1;
next;
while(p&
p->
date!
=e)
i=i++;
if(!
p)
FALSE\n"
TRUE\n"
该元素在第%d个位置!
i-1);
voidInsList(LinkListL,inti,ElemTypee)
Node*p,*s;
intk=0;
=NULL&
k<
i-1)
k=k++;
}
p)
插入位置不合理!
s=(Node*)malloc(sizeof(char));
s->
date=e;
next=p->
p->
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据 结构 实验 顺序 表链