最新华南农业大学数据结构实验答案包含STL版Word格式.docx

上传人:b****6 文档编号:8533215 上传时间:2023-05-11 格式:DOCX 页数:115 大小:47.60KB
下载 相关 举报
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第1页
第1页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第2页
第2页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第3页
第3页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第4页
第4页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第5页
第5页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第6页
第6页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第7页
第7页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第8页
第8页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第9页
第9页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第10页
第10页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第11页
第11页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第12页
第12页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第13页
第13页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第14页
第14页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第15页
第15页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第16页
第16页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第17页
第17页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第18页
第18页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第19页
第19页 / 共115页
最新华南农业大学数据结构实验答案包含STL版Word格式.docx_第20页
第20页 / 共115页
亲,该文档总共115页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

最新华南农业大学数据结构实验答案包含STL版Word格式.docx

《最新华南农业大学数据结构实验答案包含STL版Word格式.docx》由会员分享,可在线阅读,更多相关《最新华南农业大学数据结构实验答案包含STL版Word格式.docx(115页珍藏版)》请在冰点文库上搜索。

最新华南农业大学数据结构实验答案包含STL版Word格式.docx

//输出顺序表中的所有元素

inti;

if(_________________________)printf("

TheListisempty!

"

);

//请填空

else

{

printf("

TheListis:

"

for(_________________________)printf("

%d"

_________________________);

}

printf("

\n"

returnOK;

intListInsert_Sq(SqList&

L,inti,inte)

//算法2.4,在顺序线性表L中第i个位置之前插入新的元素e

//i的合法值为1≤i≤L.length+1

intListDelete_Sq(SqList&

L,inti,int&

e)

//算法2.5,在顺序线性表L中删除第i个位置的元素,并用e返回其值

//i的合法值为1≤i≤L.length

intmain()

SqListT;

inta,i;

ElemTypee,x;

if(_________________________)//判断顺序表是否创建成功

ASequenceListHasCreated.\n"

while

(1)

1:

Insertelement\n2:

Deleteelement\n3:

Loadallelements\n0:

Exit\nPleasechoose:

scanf("

%d"

&

a);

switch(a)

{

case1:

scanf("

%d%d"

i,&

x);

if(_________________________)printf("

InsertError!

//判断i值是否合法,请填空

elseprintf("

TheElement%disSuccessfullyInserted!

x);

break;

case2:

i);

DeleteError!

TheElement%disSuccessfullyDeleted!

e);

case3:

Load_Sq(T);

case0:

return1;

}

 

输入格式

测试样例格式说明:

根据菜单操作:

1、输入1,表示要实现插入操作,紧跟着要输入插入的位置和元素,用空格分开

2、输入2,表示要实现删除操作,紧跟着要输入删除的位置

3、输入3,表示要输出顺序表的所有元素

4、输入0,表示程序结束

输入样例

1

12

13

2

3

输出样例

ASequenceListHasCreated.

Insertelement

2:

Deleteelement

3:

Loadallelements

0:

Exit

Pleasechoose:

TheElement2isSuccessfullyInserted!

TheElement3isSuccessfullyInserted!

TheElement3isSuccessfullyDeleted!

2

作者

yqm

解法一:

(正规解法)

#defineOK1

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

L.length=0;

L.listsize=LIST_INIT_SIZE;

return0;

if(L.length==0)printf("

for(i=0;

i<

L.length;

i++)printf("

L.elem[i]);

ElemType*newbase,*p,*q;

if(i<

1||i>

L.length+1)returnERROR;

if(L.length>

=L.listsize)

newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));

L.elem=newbase;

L.listsize+=LISTINCREMENT;

q=&

(L.elem[i-1]);

for(p=&

(L.elem[L.length-1]);

p>

=q;

--p)

*(p+1)=*p;

*q=e;

++L.length;

ElemType*p,*q;

L.length)returnERROR;

p=&

e=*p;

q=L.elem+L.length-1;

for(++p;

p<

++p)

*(p-1)=*p;

--L.length;

if(!

InitList_Sq(T))//判断顺序表是否创建成功

if(!

ListInsert_Sq(T,i,x))printf("

ListDelete_Sq(T,i,e))printf("

解法二:

(C++STLlist)

list>

usingnamespacestd;

list<

int>

T;

inte,x;

switch(a)

case1:

(int)T.size()+1)printf("

//判断i值是否合法

intj=1,p=0;

:

iteratoriter=T.begin();

if(i==1)

T.push_front(x);

p=1;

while(iter!

=T.end())

if(j==i&

&

i!

=1)

T.insert(iter,x);

iter++;

break;

j++;

p)

T.push_back(x);

case2:

(int)T.size())printf("

intj=1;

iteratoriter;

for(iter=T.begin();

iter!

=T.end();

++iter)

if(j==i)

iteratortmp;

tmp=iter;

e=*iter;

T.erase(tmp);

case3:

if(T.empty())

iteratorplist;

for(plist=T.begin();

plist!

=T.end();

plist++)

*plist);

case0:

解法三:

(数组)

string.h>

intT[1000];

memset(T,0,sizeof(T));

inta,i,k=1,e,x;

k)printf("

for(intj=k-1;

j>

=i;

j--)

T[j+1]=T[j];

T[i]=x;

k++;

k-1)printf("

e=T[i];

for(intj=i;

j<

k;

j++)

T[j]=T[j+1];

k--;

if(k==1)printf("

for(intj=1;

j++)printf("

T[j]);

8577合并顺序表

5339通过次数:

2251

编写算法,将两个非递减有序顺序表A和B合并成一个新的非递减有序顺序表C。

本题不提供代码,请同学们独立完成,所需子函数参考前面完成的内容。

第一行:

顺序表A的元素个数

第二行:

顺序表A的各元素(非递减),用空格分开

第三行:

顺序表B的元素个数

第四行:

顺序表B的各元素(非递减),用空格分开

输出格式

顺序表A的元素列表

顺序表B的元素列表

合并后顺序表C的元素列表

5

13579

246810

ListA:

13579

ListB:

246810

ListC:

12345678910

stdlib.h>

#defineOVERFLOW-2

}SqList;

L,intn)

L.elem=(ElemType*)malloc(n*sizeof(ElemType));

L.listsize=n;

L.length=n;

for(i=0;

i<

i++)

L.elem[i]);

if(L.length==0)return0;

L.length-1;

L.elem[L.length-1]);

//if(ch=='

A'

)ch='

B'

;

//elseif(ch=='

C'

voidmergeList_Sq(SqListLa,SqListLb,SqList&

Lc)

int*pa,*pb,*pc,*pa_last,*pb_last;

pa=La.elem;

pb=Lb.elem;

Lc.listsize=Lc.length=La.length+Lb.length;

pc=Lc.elem=(ElemType*)malloc(Lc.listsize*sizeof(ElemType));

Lc.elem)exit(OVERFLOW);

pa_last=La.elem+La.length-1;

pb_last=Lb.elem+Lb.length-1;

while(pa<

=pa_last&

pb<

=pb_last)

if(*pa<

=*pb)

*pc++=*pa++;

*pc++=*pb++;

=pa_last)

while(pb<

SqListT,R,Y;

inta,b;

InitList_Sq(T,a);

b);

InitList_Sq(R,b);

mergeList_Sq(T,R,Y);

Load_Sq(R);

Load_Sq(Y);

解法二(C++STLlist)

voidload(list<

L)

for(plist=L.begin();

=L.end();

T,R;

inta,b,x;

for(inti=0;

a;

b;

R.push_back(x);

load(T);

load(R);

T.merge(R);

intInitList_Sq(intL[],intn)

n;

L[i]);

intLoad_Sq(intL[],intn)

if(n==0)return0;

L[i]);

voidmergeList_Sq(inta[],intb[],intc[],inta_length,intb_length)

inti=0,j=0,k=0;

while(i<

a_len

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

当前位置:首页 > 工作范文 > 行政公文

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

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