华南农业大学数据结构实验答案.docx
《华南农业大学数据结构实验答案.docx》由会员分享,可在线阅读,更多相关《华南农业大学数据结构实验答案.docx(27页珍藏版)》请在冰豆网上搜索。
华南农业大学数据结构实验答案
8576顺序线性表的基本操作
时间限制:
1000MS内存限制:
1000K
提交次数:
9027通过次数:
2456
题型:
编程题语言:
无限制
Description
编写算法,创建初始化容量为LIST_INIT_SIZE的顺序表T,并实现插入、删除、遍历操作。
本题目给出部分代码,请补全内容。
#include<>
#include<>
#defineOK1
#defineERROR0
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
#defineElemTypeint
typedefstruct
{
int*elem;
intlength;
intlistsize;
}SqList;
intInitList_Sq(SqList&L)
{
n");
}
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(_________________________)printf("InsertError!
\n");1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheElement2isSuccessfullyInserted!
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheElement3isSuccessfullyInserted!
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheElement3isSuccessfullyDeleted!
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheListis:
2
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#defineOK1
#defineERROR0
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
#defineElemTypeint
typedefstruct
{
int*elem;
intlength;
intlistsize;
}SqList;
intInitList_Sq(SqList&L)
{
n");
}
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(!
ListInsert_Sq(T,i,x))printf("InsertError!
\n");n");
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(i<1||i>(int)()+1)printf("InsertError!
\n");n");
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(i<1||i>k)printf("InsertError!
\n");
.,ai,...an-1),其逆顺序表定义为A'=(an-1,...,ai,...,a1,a0)。
设计一个算法,将顺序表逆置,要求顺序表仍占用原顺序表的空间。
本题不提供代码,请同学们独立完成,所需子函数参考前面完成的内容。
输入格式
第一行:
输入顺序表的元素个数
第二行:
输入顺序表的各元素,用空格分开
输出格式
第一行:
逆置前的顺序表元素列表
第二行:
逆置后的顺序表元素列表
输入样例
10
12345678910
输出样例
TheListis:
12345678910
TheturnedListis:
10987654321
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#defineOK1
#defineERROR0
#defineLIST_INIT_SIZE100
#defineLISTINCREMENT10
#defineElemTypeint
typedefstruct
{
int*elem;
intlength;
intlistsize;
}SqList;
intInitList_Sq(SqList&L,intn)
{
n");
LoadLink_L(T);
}
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(___________________________)printf("InsertError!
\n");TheLinkListis:
369
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheLinkListis:
369
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheElement12isSuccessfullyInserted!
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheElement3isSuccessfullyDeleted!
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
TheLinkListis:
6912
1:
Insertelement
2:
Deleteelement
3:
Loadallelements
0:
Exit
Pleasechoose:
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#defineERROR0
#defineOK1
#defineElemTypeint
typedefstructLNode
{
intdata;
structLNode*next;
}LNode,*LinkList;
intCreateLink_L(LinkList&L,intn){
n");
LoadLink_L(T);
}
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(!
LinkInsert_L(T,i,x))printf("InsertError!
\n");n");
for(i=0;i{
scanf("%d",&x);
(x);
}
load(T);
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(i<1||i>(int)()+1)printf("InsertError!
\n");n");
if(k==1)printf("TheListisempty!
");
else
{
printf("TheLinkListis:
");
for(intj=1;j}
printf("\n");
while
(1)
{
printf("1:
Insertelement\n2:
Deleteelement\n3:
Loadallelements\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d%d",&i,&x);
if(i<1||i>k)printf("InsertError!
\n");
.,ai,...an-1),其逆线性表定义为A'=(an-1,...,ai,...,a1,a0),设计一个算法,将线性表逆置,要求线性表仍占用原线性表的空间。
本题不提供代码,请同学们独立完成,所需子函数参考之前完成的内容。
输入格式
第一行:
输入n,表示单链表的元素个数
第二行:
输入单链表的各元素,用空格分开
输出格式
第一行:
输出单链表逆置前的元素列表
第二行:
输出单链表逆置后的元素列表
输入样例
8
3297546535846175
输出样例
TheListis:
3297546535846175
TheturnedListis:
7561843565549732
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#defineERROR0
#defineOK1
#defineElemTypeint
typedefstructLNode
{
intdata;
structLNode*next;
}LNode,*LinkList;
intCreateLink_L(LinkList&L,intn){
n");
}
while
(1)
{
printf("1:
Push\n2:
Pop\n3:
GettheTop\n4:
ReturntheLengthoftheStack\n5:
LoadtheStack\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d",&x);
if(______________________)printf("PushError!
\n");1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement2isSuccessfullyPushed!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement4isSuccessfullyPushed!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement6isSuccessfullyPushed!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheStackis:
642
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheTopElementis6!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheLengthoftheStackis3!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement6isSuccessfullyPoped!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheStackis:
42
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement4isSuccessfullyPoped!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
TheElement2isSuccessfullyPoped!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
PopError!
1:
Push
2:
Pop
3:
GettheTop
4:
ReturntheLengthoftheStack
5:
LoadtheStack
0:
Exit
Pleasechoose:
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#include<>
#defineOK1
#defineERROR0
#defineSTACK_INIT_SIZE100n");
}
while
(1)
{
printf("1:
Push\n2:
Pop\n3:
GettheTop\n4:
ReturntheLengthoftheStack\n5:
LoadtheStack\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d",&x);
if(!
Push(S,x))printf("PushError!
\n");n");
while
(1)
{
printf("1:
Push\n2:
Pop\n3:
GettheTop\n4:
ReturntheLengthoftheStack\n5:
LoadtheStack\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d",&x);
(x);
printf("TheElement%disSuccessfullyPushed!
\n",x);
break;
case2:
if())printf("PopError!
\n");inti;
i=;
if(______________________)printf("TheQueueisEmpty!
");n");
}
while
(1)
{
printf("1:
Enter\n2:
Delete\n3:
GettheFront\n4:
ReturntheLengthoftheQueue\n5:
LoadtheQueue\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d",&x);
if(______________________)printf("EnterError!
\n");1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheElement1isSuccessfullyEntered!
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheElement2isSuccessfullyEntered!
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheElement3isSuccessfullyEntered!
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheQueueis:
123
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheElement1isSuccessfullyDeleted!
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheHeadoftheQueueis2!
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
TheQueueis:
23
1:
Enter
2:
Delete
3:
GettheFront
4:
ReturntheLengthoftheQueue
5:
LoadtheQueue
0:
Exit
Pleasechoose:
作者
yqm
解法一:
(正规解法)
#include<>
#include<>
#include<>
#defineOK1
#defineERROR0
typedefintStatus;inti;
i=;
if==printf("TheQueueisEmpty!
");n");
}
while
(1)
{
printf("1:
Enter\n2:
Delete\n3:
GettheFront\n4:
ReturntheLengthoftheQueue\n5:
LoadtheQueue\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{
case1:
scanf("%d",&x);
if(!
EnQueue(S,x))printf("EnterError!
\n");n");
while
(1)
{
printf("1:
Enter\n2:
Delete\n3:
GettheFront\n4:
ReturntheLengthoftheQueue\n5:
LoadtheQueue\n0:
Exit\nPleasechoose:
\n");
scanf("%d",&a);
switch(a)
{