数据结构试验报告册.doc

上传人:jian****018 文档编号:8810264 上传时间:2020-04-01 格式:DOC 页数:68 大小:1.40MB
返回 下载 相关 举报
数据结构试验报告册.doc_第1页
第1页 / 共68页
数据结构试验报告册.doc_第2页
第2页 / 共68页
数据结构试验报告册.doc_第3页
第3页 / 共68页
点击查看更多>>
资源描述
学 生 实 验 报 告 册(理工类)课程名称:算法与数据结构 专业班级: M13软件工程 学生学号: 1321106033 学生姓名: 贾莹 所属院部: 龙蟠学院 指导教师: 徐永华 20 14 20 15 学年 第 一 学期 金陵科技学院教务处制实验报告书写要求实验报告原则上要求学生手写,要求书写工整。若因课程特点需打印的,要遵照以下字体、字号、间距等的具体要求。纸张一律采用A4的纸张。实验报告书写说明实验报告中一至四项内容为必填项,包括实验目的和要求;实验仪器和设备;实验内容与过程;实验结果与分析。各院部可根据学科特点和实验具体要求增加项目。填写注意事项(1)细致观察,及时、准确、如实记录。(2)准确说明,层次清晰。(3)尽量采用专用术语来说明事物。(4)外文、符号、公式要准确,应使用统一规定的名词和符号。(5)应独立完成实验报告的书写,严禁抄袭、复印,一经发现,以零分论处。实验报告批改说明实验报告的批改要及时、认真、仔细,一律用红色笔批改。实验报告的批改成绩采用百分制,具体评分标准由各院部自行制定。实验报告装订要求实验批改完毕后,任课老师将每门课程的每个实验项目的实验报告以自然班为单位、按学号升序排列,装订成册,并附上一份该门课程的实验大纲。实验项目名称: 顺序表 实验学时: 2 同组学生姓名: 无 实验地点: A203 实验日期: 2014/10/13 实验成绩: 批改教师: 批改时间: 实验1 顺序表一、实验目的和要求掌握顺序表的定位、插入、删除等操作。二、实验仪器和设备Turbo C 2.0 / Visual C + 6.0三、实验内容与过程(含程序清单及流程图)1、必做题(1) 编写程序建立一个顺序表,并逐个输出顺序表中所有数据元素的值。编写主函数测试结果。(2) 编写顺序表定位操作子函数,在顺序表中查找是否存在数据元素x。如果存在,返回顺序表中和x值相等的第1个数据元素的序号(序号从0开始编号);如果不存在,返回1。编写主函数测试结果。(3) 在递增有序的顺序表中插入一个新结点x,保持顺序表的有序性。解题思路:首先查找插入的位置,再移位,最后进行插入操作;从第一个元素开始找到第一个大于该新结点值x的元素位置i即为插入位置;然后将从表尾开始依次将元素后移一个位置直至元素i;最后将新结点x插入到i位置。(4) 删除顺序表中所有等于X的数据元素。2、选做题(5) 已知两个顺序表A和B按元素值递增有序排列,要求写一算法实现将A和B归并成一个按元素值递减有序排列的顺序表(允许表中含有值相同的元素)。程序清单:1、必做题(1)(2)(3)(4)#include#define maxsize 64typedef struct nodeint tag;/*记录线性表最后一个元素的下标*/int datamaxsize;list;/(1)顺序表的创建list CREAT()int i;int a;list p;printf(输入顺序表的值,-1表示输入结束:n);scanf(%d,&a);i=0;while(a!=-1)/*-1表示输入结束*/if(i=maxsize)printf(顺序表已满!);break;elsep.datai=a;i+;scanf(%d,&a);p.tag=i-1;printf(创建完毕!n);return p;/(2)顺序表的定位int GET(list p,int x)/*存在返回下标,不存在返回-1。*/int i;for(i=0;itagmaxsize-1)if(xdata0)for(j=p-tag;j=0;j-)p-dataj+1=p-dataj;p-data0=x;else if(xp-datap-tag)p-datap-tag+1=x;elsefor(i=1;itag;i+)if(xp-datai & xdatai+1)for(j=p-tag;j=i+1;j-)p-dataj+1=p-dataj;p-datai+1=x;p-tag+;printf(成功插入!);elseprintf(顺序表已满,无法插入!);/(4)顺序表的删除list DELETE(list p,int x)/*删除顺序表中所有数据元素为x的数*/int i=0,j;while(i=p.tag)if(p.datai=x)for(j=i;jp.tag;j+)p.dataj=p.dataj+1;p.tag-;else i+;return p;/顺序表的排序list SORT(list p)int i,j;int temp;for(i=0;ip.tag;i+)for(j=i+1;jp.dataj)temp=p.datai;p.datai=p.dataj;p.dataj=temp;printf(排序完成!);return p;/顺序表的打印void PRINT(list p)int i;printf(ntag=%dn,p.tag);for(i=0;i=p.tag;i+)printf(%d ,p.datai);printf(打印完毕!nn);/主函数int main()list n;int m,k,select;n.tag=-1;n=CREAT();PRINT(n);printf(select=1时,执行查找操作;n);printf(select=2时,执行排序操作;n);printf(select=3时,执行插入操作;n);printf(select=4时,执行删除操作;n);printf(select=0时,退出此次操作.n);printf(n请输入select的值:);scanf(%d,&select);while(select)switch (select)case 1:printf(请输入你要查找的数:);scanf(%d,&m);k=GET(n,m);if(k=-1)printf(不存在该数!n);elseprintf(存在该数,位置tag=%dn,k);break;case 2:n=SORT(n);PRINT(n);break;case 3:printf(请输入你要插入的数:);scanf(%d,&m);INSEART(&n,m);PRINT(n);break;case 4:printf(请输入你要删除的数:);scanf(%d,&m);n=DELETE(n,m);PRINT(n);break;default:printf(输入错误!n);break;printf(n请输入select的值:);scanf(%d,&select);return 0;2、选做题(5)#include#define maxsize 64typedef struct nodeint tag;/*记录线性表最后一个元素的下标*/int datamaxsize;list;/顺序表的创建list CREAT()int i;int a;list p;printf(输入顺序表的值,-1表示输入结束:n);scanf(%d,&a);i=0;while(a!=-1)/*-1表示输入结束*/if(i=maxsize)printf(顺序表已满!);break;elsep.datai=a;i+;scanf(%d,&a);p.tag=i-1;printf(创建完毕!n);return p;/顺序表的打印void PRINT(list p)int i;printf(ntag=%dn,p.tag);for(i=0;ilb.dataj)lc.datak=la.datai;i-;elselc.datak=lb.dataj;j-;k+;while(i!=-1)lc.datak=la.datai;i-;k+;while(j!=-1)lc.datak=lb.dataj;j-;k+;lc.tag=la.tag+lb.tag+1;return lc;/主函数int main()list a,b,c;a.tag=-1;b.tag=-1;a=CREAT();PRINT(a);b=CREAT();PRINT(b);c=MERGE(a,b);PRINT(c);return 0;四、实验结果与分析(程序运行结果及其分析)1、必做题(1)(2)(3)(4)2、选做题(5)五、实验体会(遇到问题及解决办法,编程后的心得体会) 基于顺序表上的操作相对还是比较简单的,就相当于对数组进行操作,但是代码的篇幅较长,需要一段一段的运行排错,而且添加必要的注释便于阅读。实验项目名称: 单链表 实验学时: 2 同组学生姓名: 无 实验地点: A203 实验日期: 2014/10/20 实验成绩: 批改教师: 批改时间: 实验2 单链表一、实验目的和要求1、实验目的掌握单链表的定位、插入、删除等操作。2、实验要求(1)注意链表的空间是动态分配的,某结点不用之后要及时进行物理删除,以便释放其内存空间。(2)链表不能实现直接定位,一定注意指针的保存,防止丢失。二、实验仪器和设备Turbo C 2.0 / Visual C + 6.0三、实验内容与过程(含程序清单及流程图)1、必做题(1) 编写程序建立一个单链表,并逐个输出单链表中所有数据元素。(2) 在递增有序的单链表中插入一个新结点x,保持单链表的有序性。解题思路:首先查找插入的位置然后进行插入操作;从第一个结点开始找到第一个大于该新结点值的结点即为插入位置;然后在找到的此结点之前插入新结点;注意保留插入位置之前结点的指针才能完成插入操作。(3) 编写实现带头结点单链表就地逆置的子函数,并编写主函数测试结果。2、选做题已知指针LA和LB分别指向两个无头结点单链表的首元结点。要求编一算法实现,从表LA中删除自第i个元素起共len个元素后,将它们插入到表LB中第j个元素之前。程序清单:1、必做题(1)(2)(3)#include#includetypedef struct nodeint data;struct node *next;linklist;/(1)单链表的建立(带头结点的尾插法)linklist *CREAT()linklist *head=NULL,*p=NULL,*s=NULL;int a;head=(linklist *)malloc(sizeof(linklist);p=head;printf(输入顺序表的值,-1表示输入结束:n);scanf(%d,&a);while(a!=-1)s=(linklist *)malloc(sizeof(linklist);if(s=NULL)exit(0);s-data=a;p-next=s;p=s;scanf(%d,&a);s-next=NULL;printf(建立完毕!n);return head;/(2)单链表的插入linklist *INSERT(linklist *head,int x)/*在递增链表中插入x,保持链表的有序性。*/linklist *s=NULL,*p=NULL;p=(linklist *)malloc(sizeof(linklist);p-data=x;if(head-next=NULL | head-next-data=x)p-next=head-next;head-next=p;return head;s=head-next;while(s & s-next)if(xs-data & xnext-data)p-next=s-next;s-next=p;return head;s=s-next;s-next=p;p-next=NULL;return head;/(3)单链表的逆置linklist *REVERSE(linklist *head)linklist *s=NULL,*p=NULL;p=head-next;if(head-next=NULL)return head;s=p-next;while(p-next)p-next=s-next;s-next=head-next;head-next=s;dos=s-next;while(s!=p-next);printf(逆转成功!n);return head;/单链表的排序linklist *SORT(linklist *head1)/*直接插入法排序*/linklist *p,*pre;p=head1-next;head1-next=NULL;while(p)head1=INSERT(head1,p-data);p=p-next;printf(排序完成!n);return head1;/单链表的打印void PRINT(linklist *head)linklist *s=NULL;s=head-next;while(s)printf(%d ,s-data);s=s-next;printf(打印完毕!nn);/主函数int main()linklist *lhead=NULL;int m;lhead=CREAT();PRINT(lhead);lhead=SORT(lhead);PRINT(lhead);printf(请输入你要插入的数:n);scanf(%d,&m);lhead=INSERT(lhead,m);PRINT(lhead);lhead=REVERSE(lhead);PRINT(lhead);return 0;2、选做题(4)#include#includetypedef struct nodeint data;struct node *next;linklist;/(4)单链表的连接linklist *CONNECT(linklist *la,int i,linklist *lb,int j)linklist *q=NULL,*w=NULL,*e=NULL;q=la;w=lb;while(i-2!=0 & q!=NULL)q=q-next;i-;q-next=NULL;while(j-2!=0 & w!=NULL)w=w-next;j-;q-next=w-next;w-next=la;return lb;/单链表的建立(不带头结点的尾插法)linklist *CREAT()linklist *head=NULL,*p=NULL,*s=NULL;int a;printf(输入顺序表的值,-1表示输入结束:n);scanf(%d,&a);while(a!=-1)s=(linklist *)malloc(sizeof(linklist);if(s=NULL)exit(0);s-data=a;if(head=NULL)head=s;elsep-next=s;p=s;scanf(%d,&a);p-next=NULL;printf(建立完毕!n);return head;/单链表的打印void PRINT(linklist *head)linklist *s=NULL;s=head;while(s)printf(%d ,s-data);s=s-next;printf(打印完毕!nn);/主函数int main()linklist *h1,*h2;printf(创建链表1n);h1=CREAT();PRINT(h1);printf(创建链表2n);h2=CREAT();PRINT(h2);printf(删除单链表1后第3个元素后所有元素,n);printf(剩余元素插入单链表2中第3个元素之前:n);h2=CONNECT(h1,3,h2,3);PRINT(h2);return 0;四、实验结果与分析(程序运行结果及其分析)1、必做题(1)(2)(3)2、选做题(4)五、实验体会(遇到问题及解决办法,编程后的心得体会)在做必做题和选做题时,我分别把单链表带头结点和不带头结点的方式都熟悉了一下,并且单链表的逆置使用了头插法重新建立带头结点的新链表,就不需要每插入一个元素就遍历单链表一次,此外,逆置用递归也是可以做的。实验项目名称: 堆栈和队列 实验学时: 2 同组学生姓名: 无 实验地点: A203 实验日期: 2014/10/27 实验成绩: 批改教师: 批改时间: 实验3 堆栈和队列一、实验目的和要求(1)掌握应用栈解决问题的方法。(2)掌握利用栈进行表达式求和的算法。(3)掌握队列的存储结构及基本操作实现,并能在相应的应用问题中正确选用它们。二、实验仪器和设备Turbo C 2.0 / Visual C + 6.0三、实验内容与过程(含程序清单及流程图)1、必做题(1) 判断一个算术表达式中开括号和闭括号是否配对。(2) 假设称正读和反读都相同的字符序列为”回文”,试写一个算法判别读入的一个以为结束符的字符序列是否是“回文”。2、选做题(1)测试“汉诺塔”问题。(2)在顺序存储结构上实现输出受限的双端循环队列的入列和出列算法。设每个元素表示一个待处理的作业,元素值表示作业的预计时间。入队列采取简化的短作业优先原则,若一个新提交的作业的预计执行时间小于队头和队尾作业的平均时间,则插入在队头,否则插入在队尾。程序清单:1、必做题(1)#include#include#define N 64/链栈的构造typedef struct nodechar ch;struct node *next;linkstack;/链栈的进栈linkstack *PUSH(linkstack *top,char x)linkstack *p=NULL;p=(linkstack *)malloc(sizeof(linkstack);p-ch=x;p-next=top;return p;/链栈的出栈void POP(linkstack *top)(*top)=(*top)-next;/链栈的判栈空int EMPTY(linkstack *top)if(top=NULL)return 1;return 0;/1(1)判断表达式的括号是否配对void PAIR(char exp)linkstack *t=NULL;int i,k;int flag=0;/*标记表达式中是否存在括号*/i=0;while(expi!=0)if(expi=()t=PUSH(t,();flag=1;else if(expi=)POP(&t);i+;k=EMPTY(t);if(k & flag)printf(表达式中括号配对。n);else if(k)printf(表达式中不存在括号。n);elseprintf(表达式中括号不配对。n);/主函数int main()int y,n,l;char cN;printf(请输入你想要验证的表达式个数:);scanf(%d,&n);getchar();for(l=0;ln;l+)gets(c);PAIR(c);return 0;1、必做题(2)#include#include/带双链表的队列构造typedef struct dnodechar ch;struct dnode *prior,*next;linklist;typedef struct linklist *front,*rear;linkqueue;/1(2)判断字符序列是否是回文void PALINDROME(linkqueue *q,int j)int k;linklist *la,*lb;la=q-front-next;lb=q-rear;for(k=0;kch=lb-ch)la=la-next;lb=lb-prior;if(la-ch=lb-ch)printf(该字符序列是回文!n);elseprintf(该字符序列不是回文!n);/队列的置空void STUNULL(linkqueue *q)q-front=(linklist*)malloc(sizeof(linklist);if(q-front=NULL)exit(0);q-front-next=NULL;q-front-prior=NULL;q-rear=q-front;/队列的入队void ENQUEUE(linkqueue *q,char x,int *j)q-rear-next=(linklist *)malloc(sizeof(linklist);if(q-rear-next=NULL)exit(0);q-rear-next-ch=x;q-rear-next-prior=q-rear;q-rear=q-rear-next;q-rear-next=NULL;(*j)+;int main()linkqueue p;char y;int i=0;STUNULL(&p);printf(请输入一个字符序列,以结束:);y=getchar();while(y!=)ENQUEUE(&p,y,&i);y=getchar();PALINDROME(&p,i);return 0;2、选做题(1)#include#define N 64/顺序栈的构造typedef struct nodeint dataN;char naem;int top;sqstack;/顺序栈的置空void SETNULL(sqstack *q)q-top=-1;/顺序栈的进栈int PUSH(sqstack *q,int x)if(q-top=N-1)return 0;q-top+;q-dataq-top=x;return 1;/顺序栈的出栈int POP(sqstack *q,int *x)if(q-top=-1)return 0;(*x)=q-dataq-top;q-top-;return 1;/盘子的移动void MOVE(sqstack *x,sqstack *y)int l;POP(x,&l);printf(nttt%d环-%c柱子,l,y-naem);PUSH(y,l);/汉诺塔的递归运算int HANOI(int n,sqstack *a,sqstack *b,sqstack *c)static int i=0;if(n=1)MOVE(a,c);i+;elseHANOI(n-1,a,c,b);MOVE(a,c);i+;HANOI(n-1,b,a,c);return i;/主函数int main()int m,t,k;sqstack A,B,C;SETNULL(&A);SETNULL(&B);SETNULL(&C);A.naem=A;B.naem=B;C.naem=C;printf(请输入汉诺塔中圆环的数目:);scanf(%d,&m);for(t=m;t0;t-)PUSH(&A,t);printf(nt假设有三根柱子A、B、C,开始时A柱子上有1%d环,并且它们是按照从小到大的顺序放在A柱子上的,按照汉诺塔规则,将A柱子上所有环通过B柱子,移动到C柱子的则移动方法为:nn,m);k=HANOI(m,&A,&B,&C);printf(nn总共需要移动的次数为:%d次n,k);return 0;2、选做题(2)#include#include# define N 64typedef struct int *base;int front,rear;sqqueue;/顺序循环队列的置空int SETNULL(sqqueue *q)q-base=(int *)malloc(N*sizeof(int);if(q=NULL)exit(0);q-front=q-rear=0;return 1;/2、选做题(2) 顺序循环队列的短作业优先原则进队int ENQUEUE(sqqueue *q,int e)if(q-rear+1)%N=q-front)return 0;if( (e*2) = (q-baseq-front+q-baseq-rear-1) )q-baseq-rear=e;q-rear=(q-rear+1)%N;elseq-front=(q-front-1)%N;q-baseq-front=e;printf(队头元素为:%d,队尾元素为:%d;,q-baseq-front,q-baseq-rear-1);return 1;/顺序循环队列的打印void PRINT(sqqueue *q)int f,r;f=q-front,r=q-rear;while(f!=r)printf(%d ,q-basef);f=(f+1)%N;printf(n);/主函数int main()sqqueue que;int m,p;SETNULL(&que);printf(请输入你要插入的元素,以-1结束:n);scanf(%d,&m);while(m!=-1)ENQUEUE(&que,m);printf(n顺序循环队列为:);PRINT(&que);printf(再次请输入你要插入的元素:n);scanf(%d,&m);return 0;四、实验结果与分析(程序运行结果及其分析)1、必做题(1)2、必做题(2)2、选做题(1)2、选做题(2)五、实验体会(遇到问题及解决办法,编程后的心得体会) 本次的实验难度明显比前面两章要大,而且都应用到了实际的问题,其实栈和队列就是一种运算方式,一道问题有时候不仅可以用栈来完成,队列也同样可以完成,教科书上的链队列是单链表组成的链队列,同样只要熟悉了这些基本的构造方式,在判断回文中我也构造出了双向链表组成的链队列,大大增加的程序的灵活性,其实简单的栈和队列就能解决实际问题,但是作为练习,还是应该尝试用其他方法做试试的。同时,由于题目相对还是比较有难度的,所以我觉得自己的代码尚且还有不完美的地方,有待改进。实验项目名称: 串 实验学时: 2 同组学生姓名: 无 实验地点: A203 实验日期: 2014/11/3 实验成绩: 批改教师: 批改时间: 实验4 串一、实验目的和要求掌握串的存储及应用。二、实验仪器和设备Turbo C 2.0 / Visual C + 6.0三、实验内容与过程(含程序清单及流程图)1、必做题(1) 编写输出字符串s中值等于字符ch的第一个字符的函数,并用主函数测试结果。(2) 编写输出字符串s中值等于字符ch的所有字符的函数,并用主函数测试结果。解题思路:可以将第一题程序改进成一个子函数,在本题中循环调用。(3) 设字符串采用单字符的链式存储结构,编程删除串s从位置i开始长度为k的子串。2、选做题假设以链结构表示串,编写算法实现将串S插入到串T中某个字符之后,若串T中不存在这个字符,则将串S联接在串T的末尾。提示:为提高程序的通用性,插入位置字符应设计为从键盘输入。程序清单:1、必做题(1)(2)# include# define maxsize 100typedef struct char datamaxsize;int curlen;seqstring;/(1)输出字符串s中值等于字符ch的第一个字符的函数int OUTPUT1(seqstring *p,char ch1)int i=0,m=0;while(icurlen-1)if(p-datai=ch1)putchar(ch1);putchar( );m+;break;i+;return m;/(2)输出字符串s中值等于字符ch的第一个字符的函数(改进后供反复调用的子函数)int OUTPUT2(seqstring *p,char ch1,int j)while(jcurlen-1)if(p-dataj=ch1)putchar(ch1);putchar( );return +j;j+;/顺序串的创建seqstring CREAT()char x;seqstring q;q.curlen=1;printf(输入字符串,表示输入结束:n);x=getchar();getchar();while(x!=)if(q.curlenmaxsize)printf(顺序串已满!);break;elseq.dataq.curlen-1=x;q.curlen+;x=getchar();getchar();printf(创建完毕!n);return q;int main()int select,i=0,n,k;char ch;seqstring s;s=CREAT();printf(请输入要查找的字符:);ch=getchar();getchar();printf(请输入你想执行的操作(0:结束;1:输出首个;2:输出所有):);while(scanf(%d,&select) & select)if(select=1)n=0;n=OUTPUT1(&s,ch);if(n=0)printf(顺序串中不存在该字符!n);elseprintf(顺序串中存在该字符!n);else if(select=2)n=0;while(is.curlen-1)i=OUTPUT2(&s,ch,i);n+;if(i!=s.curlen-1)n-;printf(顺序串中存在%d个该字符!n,n);elseprintf(输入错误!n);printf(再次选择操作:);1、必做题(3)# include# includetypedef struct linknodechar data;struct linknode *next;linkstring;/字符串的创建(相当于不带头结点的单链表的尾插法)linkstring *CREAT()linkstring *head=NULL,*p=NULL,*s=NULL;int a;printf(输入顺序表的值,-1表示输入结束:n);scanf(%d,&a);while(a!=-1)s=(linkstring *)malloc(sizeof(linkstring);if(s=NULL)exit(0);s-data=a;if(head=NULL)head=s;elsep-next=s;p=s;scanf(%d,&a);p-next=NULL;printf(建立完毕!n);return head;/查询s串中是否存在从位置i开始长度为k的子串的函数int SEARCH(linkstring *s,int i,int k)linkstring *p=s;int j=0;for(;jnext!=NULL;j+)p=p-next;if(j=i+k-2)return 1;return 0;/(3)删除串s从位置i开始长度为k的子串的函数void DELETE(linkstring *s,int i,int k)linkstring *p=s,*q=NULL;int j=1;for(;jnext;for(j=0;jnext;p-next=q-next;free(q);printf(成功删除!);/字符串的打印void PRINT(linkstring *head)linkstring *s=NULL;s=head;while(s)printf(%d ,s-data);s=s-next;printf(打印完毕!nn);/主函数int main()linkstring *ls;int ii,kk,m;ls=CREAT();PRINT(ls);printf(输入你想删除第几个字符起的连续多少个字符:);scanf(%d%d,&ii,&kk);m=SEARCH(ls,ii,kk);if(m=0)printf(不存在这样的子串,删除失败!);elseDELETE(ls,ii,kk);PRINT(ls);return 0;2、选做题# include# includetypedef struct linknodechar data;struct linknode *next;linkstring;/字符串的创建(相当于不带头结点的单链表的尾插法)linkstring *CREAT()linkstring *head=NULL,*p=NULL,*s=NULL;char a;printf(输入顺序表的值,表示输入结束:n);scanf(%c,&a);getchar();while(a!=)s=(linkstring *)malloc(sizeof(linkstring);if(s=NULL)exit(0);s-data=a;if(head=NULL)head=s;elsep-next=s;p=s;scanf(%c,&a);getchar();p-next=NULL;printf(建立完毕!n);return head;/ 2 选做题 将串S插入到串T中某个字符之后linkstring *INSEART(linkstring *head1,linkstring *head2,char ch1)linkstring *s1=head1,*t1=head2;while(s1-data!=ch1 & s1-next!=NULL)s1=s1-next;if(s1-next=NULL)s1-next=t1;elsewhile(t1-next!=NULL)t1=t1-next;t1-next=s1-next;s1-next=head2;return head1;/字符串的打印void PRINT(linkstring *head)linkstring *s=NULL;s=head;while(s)printf(%c ,s-data);s=s-next;printf(打印完毕!nn);/主函数int main()linkstring *s,*t;char ch;printf(创建单链表1:);s=CREAT();printf(创建单链表2:);t=CREAT();printf(请输入一个字符:);scanf(%c,&ch);s=INSEART(s,t,ch);PRINT(s);return 0;四、实验结果与分析(程序运行结果及其分析)1、 必做题(1)(2)1、 必做题(3)2、选做题五、实验体会(遇到问题及解决办法,编程后的心得体会) 字符串的操作基本上是不怎么难的,注意一些该注意的细节就行了,在必做题第(2)题中如果就是直接用一个函数全部显示所有输入的那个字符会更简单,反而反复调用(1)中的函数让我觉得更难,可能是因为这题比较简单的原因,需要某种特定情境能让反复调用显得更简单。实验项目名称: 二叉树 实验学时: 2 同组学生姓名: 无 实验地点: A203 实验日期: 2014/11/10
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 管理文书 > 工作总结


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!