1、数据结构实习题答案数据结构上机实验的目的和要求通过上机实验加深对课程内容的理解,增加感性认识,提高软件设计、编写及调试程序的能力。要求所编的程序能正确运行,并提交实验报告。实验报告的基本要求为:1、需求分析:陈述程序设计的任务,强调程序要做什么,明确规定:(1)输入的形式和输出值的范围;(2)输出的形式;(3)程序所能达到的功能;(4)测试数据:包括正确的输入输出结果和错误的输入及输出结果。2、概要设计:说明用到的数据结构定义、主程序的流程及各程序模块之间的调用关系。3、详细设计:提交带注释的源程序或者用伪代码写出每个操作所涉及的算法。4、调试分析:(1)调试过程中所遇到的问题及解决方法;(2
2、)算法的时空分析;(3)经验与体会。5、用户使用说明:说明如何使用你的程序,详细列出每一步操作步骤。6、测试结果:列出对于给定的输入所产生的输出结果。若有可能,测试随输入规模的增长所用算法的实际运行时间的变化。实验一、线性表的基本操作一、目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。二、内容(题目)三、分析过程四、设计过程五、实现六、测试七、性能分析范例:1约瑟夫环#define NULL 0typedef struct Node int bianhao; int mima; struct Node *next; Node;Node *CreatFr
3、omTail(int n) Node *l,*r,*s; int i,mima; l=(Node *)malloc(sizeof(Node); l-next=NULL; r=l; printf(input other miman); for(i=1;ibianhao=i; s-mima=mima; r-next=s; r=s; r-next=l-next; return l;DeleNode(int m,int n,Node *l) int i,j; Node *p,*q; p=l; i=1; while(i=n) for(j=1;jnext; q=p-next; p-next=q-next;
4、 printf(chu dui d ren shi%d, qi mima shi%dn ,q-bianhao,q-mima); i+; m=q-mima; free(q); return;main() Node *l; int m,n; printf(input number of people and the first miman); scanf(%d,%d,&n,&m); l=CreatFromTail(n); DeleNode(m,n,l);2回文判断方法1:#include stdio.hmain() char a100,c; int len; int i,j,top; i=0; w
5、hile(c=getchar()!=) ai=c; i+; for(j=0;j=0) if (atop!=aj) printf(is not); return; top-; j+; printf(is);方法2:#include stdio.h#define TRUE 1#define FALSE 0#define stacksize 100#define queuesize 100typedef struct char elemqueuesize; int front,rear; sequeue;typedef struct char elemstacksize; int top; seqs
6、tack;int EnterQueue(sequeue *q,char x) if(q-rear+1)%queuesize=q-front) return(FALSE); q-elemq-rear=x; q-rear=(q-rear+1)%queuesize; return(TRUE);char delete(sequeue *q) char x; if (q-rear=q-front) return(FALSE); x=q-elemq-front; q-front=(q-front+1)%queuesize; return(x);int push(seqstack *s,char x) if
7、(s-top=stacksize-1) return(FALSE); s-top+; s-elems-top=x;char pop(seqstack *s) char x; if(s-top=-1) return(FALSE); else x=s-elems-top; s-top-; return(x); main() char c; int len1=0,len2=0; seqstack *s; sequeue *q; char x1,x2; q=(sequeue*)malloc(sizeof(sequeue); q-front=q-rear=0; while(c=getchar()!=&)
8、 EnterQueue(q,c); len1+; s=(seqstack*)malloc(sizeof(seqstack); s-top=-1; while(c=getchar()!=) push(s,c); len2+; if(len1!=len2) printf(is not); else while(s-top=0) x1=pop(s); x2=delete(q); if(x1!=x2) printf(is not); return; printf(is); 3串操作(92页实习题1)方法1:#include stdio.hmain() char s100,t100,r100,c; in
9、t i,j,k,m,len1,len2,len3; gets(s); gets(t); len1=0; while(slen1!=0) len1+; len2=0; while(tlen2!=0) len2+; len3=0; i=0; k=0; while(ilen1) j=0; while(j=len2) rlen3=si; m=0; while (mlen3)&rm!=rlen3) m+; if (m=len3) printf(%c zai s zhong shou ci chu xian de wei zhi shi %dn,rlen3,i); len3+; i+; for(k=0;k
10、len+t.lenlen;ilen+t.len;i+) s-chi=t.chi-s-len; s-len+=t.len; flag=1; else if (s-lenlen;ichi=t.chi-s-len; s-len=Maxlen; flag=0; else flag=0; return(flag); len(SString s) return(s.len);SubString(SString *sub,SString s,int pos,int len ) int i; if (poss.len|lens.len-pos) sub-len=0; return(0); else for(i
11、=0;ichi=s.chi+pos; sub-chi=0; sub-len=len; return 1; equal(SString s,SString t) int i; if (s.len!=t.len) return 0; else for(i=0;is.len&it.len;i+) if (s.chi!=t.chi) return 0; return 1; StrIndex(SString s,int pos ,SString t) int i,j; if (t.len=0)return 0; i=pos; j=0; while(is.len&j=t.len) return(i-j); else return 0;main() SString s,t,x,r=,0; SString *sub1,*sub2,*sub3; int i,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