数据结构实习题答案.docx

上传人:b****3 文档编号:2078462 上传时间:2022-10-26 格式:DOCX 页数:21 大小:20.04KB
下载 相关 举报
数据结构实习题答案.docx_第1页
第1页 / 共21页
数据结构实习题答案.docx_第2页
第2页 / 共21页
数据结构实习题答案.docx_第3页
第3页 / 共21页
数据结构实习题答案.docx_第4页
第4页 / 共21页
数据结构实习题答案.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

数据结构实习题答案.docx

《数据结构实习题答案.docx》由会员分享,可在线阅读,更多相关《数据结构实习题答案.docx(21页珍藏版)》请在冰豆网上搜索。

数据结构实习题答案.docx

数据结构实习题答案

《数据结构》上机实验的目的和要求

通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。

要求所编的程序能正确运行,并提交实验报告。

实验报告的基本要求为:

1、需求分析:

陈述程序设计的任务,强调程序要做什么,明确规定:

(1)输入的形式和输出值的范围;

(2)输出的形式;

(3)程序所能达到的功能;

(4)测试数据:

包括正确的输入输出结果和错误的输入及输出结果。

2、概要设计:

说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。

3、详细设计:

提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。

4、调试分析:

(1)调试过程中所遇到的问题及解决方法;

(2)算法的时空分析;

(3)经验与体会。

5、用户使用说明:

说明如何使用你的程序,详细列出每一步操作步骤。

6、测试结果:

列出对于给定的输入所产生的输出结果。

若有可能,测试随输入规模的增长所用算法的实际运行时间的变化。

 

实验一、线性表的基本操作

一、目的:

了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。

二、内容

(题目)

三、分析过程

四、设计过程

五、实现

六、测试

七、性能分析

范例:

1.约瑟夫环

#defineNULL0

typedefstructNode

{

intbianhao;

intmima;

structNode*next;

}Node;

Node*CreatFromTail(intn)

{

Node*l,*r,*s;

inti,mima;

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

l->next=NULL;

r=l;

printf("inputothermima\n");

for(i=1;i<=n;i++)

{

scanf("%d",&mima);

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

s->bianhao=i;

s->mima=mima;

r->next=s;

r=s;

}

r->next=l->next;

returnl;

}

DeleNode(intm,intn,Node*l)

{

inti,j;

Node*p,*q;

p=l;

i=1;

while(i<=n)

{

for(j=1;j<=m-1;j++)p=p->next;

q=p->next;

p->next=q->next;

printf("chuduidrenshi%d,qimimashi%d\n",q->bianhao,q->mima);i++;

m=q->mima;

free(q);

}

return;

}

main()

{

Node*l;

intm,n;

printf("inputnumberofpeopleandthefirstmima\n");

scanf("%d,%d",&n,&m);

l=CreatFromTail(n);

DeleNode(m,n,l);

}

2.回文判断

方法1:

#include"stdio.h"

main()

{

chara[100],c;

intlen;

inti,j,top;

i=0;

while((c=getchar())!

='@')

{

a[i]=c;

i++;

}

for(j=0;j

printf("%c",a[j]);

top=i-1;

j=0;

while(top>=0)

{

if(a[top]!

=a[j])

{

printf("isnot");

return;

}

top--;

j++;

}

printf("is");

}

方法2:

#include"stdio.h"

#defineTRUE1

#defineFALSE0

#definestacksize100

#definequeuesize100

typedefstruct

{

charelem[queuesize];

intfront,rear;

}sequeue;

typedefstruct

{

charelem[stacksize];

inttop;

}seqstack;

intEnterQueue(sequeue*q,charx)

{

if((q->rear+1)%queuesize==q->front)return(FALSE);

q->elem[q->rear]=x;

q->rear=(q->rear+1)%queuesize;

return(TRUE);

}

chardelete(sequeue*q)

{

charx;

if(q->rear==q->front)return(FALSE);

x=q->elem[q->front];

q->front=(q->front+1)%queuesize;

return(x);

}

intpush(seqstack*s,charx)

{

if(s->top==stacksize-1)return(FALSE);

s->top++;

s->elem[s->top]=x;

}

charpop(seqstack*s)

{

charx;

if(s->top==-1)return(FALSE);

else

{

x=s->elem[s->top];

s->top--;

return(x);

}

}

main()

{

charc;

intlen1=0,len2=0;

seqstack*s;

sequeue*q;

charx1,x2;

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

q->front=q->rear=0;

while((c=getchar())!

='&')

{

EnterQueue(q,c);len1++;

}

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

s->top=-1;

while((c=getchar())!

='@')

{

push(s,c);len2++;

}

if(len1!

=len2)printf("isnot");

else

{

while(s->top>=0)

{

x1=pop(s);x2=delete(q);

if(x1!

=x2){printf("isnot");return;}

}

printf("is");

}

}

3.串操作(92页实习题1)

方法1:

#include"stdio.h"

main()

{

chars[100],t[100],r[100],c;

inti,j,k,m,len1,len2,len3;

gets(s);

gets(t);

len1=0;

while(s[len1]!

='\0')len1++;

len2=0;

while(t[len2]!

='\0')len2++;

len3=0;

i=0;k=0;

while(i

{

j=0;

while((j

=t[j]))

j++;

if(j>=len2)

{

r[len3]=s[i];

m=0;

while((m

=r[len3])m++;

if(m==len3)printf("%czaiszhongshoucichuxiandeweizhishi%d\n",r[len3],i);

len3++;

}

i++;

}

for(k=0;k

printf("%c",r[k]);

}

方法2:

#include"string.h"

#defineMaxlen100

typedefstruct{

charch[Maxlen];

intlen;

}SString;

concat(SString*s,SStringt)

{

inti,flag;

if(s->len+t.len<=Maxlen)

{

for(i=s->len;ilen+t.len;i++)

s->ch[i]=t.ch[i-s->len];

s->len+=t.len;flag=1;

}

elseif(s->len

{

for(i=s->len;i

s->ch[i]=t.ch[i-s->len];

s->len=Maxlen;flag=0;

}

elseflag=0;

return(flag);

}

len(SStrings)

{

return(s.len);

}

SubString(SString*sub,SStrings,intpos,intlen)

{

inti;

if(pos<0||pos>s.len||len<1||len>s.len-pos)

{

sub->len=0;

return(0);

}

else

{

for(i=0;i

sub->ch[i]=s.ch[i+pos];

sub->ch[i]='\0';

sub->len=len;

return1;

}

}

equal(SStrings,SStringt)

{

inti;

if(s.len!

=t.len)return0;

else

{

for(i=0;i

if(s.ch[i]!

=t.ch[i])return0;

return1;

}

}

StrIndex(SStrings,intpos,SStringt)

{

inti,j;

if(t.len==0)return0;

i=pos;

j=0;

while(i

if(s.ch[i]==t.ch[j]){i++;j++;}

else{i=i-j+1;j=0;}

if(j>=t.len)return(i-j);

elsereturn0;

}

main()

{

SStrings,t,x,r={"",0};

SString*sub1,*sub2,*sub3;

inti,j,k;

sub1=(SString*)malloc(sizeof(SString));

sub2=(SString*)malloc(sizeof(SString));

sub3=(SString*)malloc(sizeof(SString));

gets(s.ch);

s.len=strlen(s.ch);

gets(t.ch);

t.len=strlen(t.ch);

/*SubString(sub1,s,1,1);

c

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

当前位置:首页 > 求职职场 > 简历

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

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