欢迎来到天天文库
浏览记录
ID:8484580
大小:738.00 KB
页数:29页
时间:2018-03-29
《数据结构实验报告》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、本科实验报告课程名称:数据结构B实验项目:数据结构实验实验地点:教室专业班级:软件1331学号:学生姓名:孙涛指导教师:杨崇艳2014年12月16日28实验一 线性表一.目的与要求本次实习的主要目的是为了使学生熟练掌握线性表的基本操作在顺序存储结构和链式存储结构上的实现,提高分析和解决问题的能力。要求仔细阅读并理解下列例题,上机通过,并观察其结果,然后独立完成后面的实习题。二.例题[问题描述]用链表形式存储一个字符串,插入、删除某个字符,最后按正序、逆序两种方式输出字符串。[输入]初始字符串,插入位置,插入
2、字符,删除字符。[输出]已建立链表(字符串),插入字符后链表,删除字符后链表,逆转后链表。[存储结构]采用链式存储结构[算法的基本思想]建立链表:当读入字符不是结束符时,给结点分配存储空间,写数据域,将新结点插到表尾;插入字符:根据读入的字符在链表中找插入位置,将新结点插入到该位置之前;删除字符:根据读入的删除字符在链表中找到被删结点后,将其从链表中删除;链表逆转:从链表的第一个结点开始对所有结点处理,将每个结点的前驱变为它的后继;打印链表:从链表的第一个结点开始,依次打印各个结点的数据域。[参考源程序]#
3、defineNULL0typedefstructnode{ chara; structnode*link;}node,*nodelink;voidreadlink(nodelinkhead){ nodelinkp,q; charc; p=head; printf("Inputalinktable(astring):"); scanf("%c",&c); if(c=='')printf("Thisstringisempty。"); while(c!='')
4、 {q=(nodelink)malloc(sizeof(node)); q->a=c; p->link=q; p=q; scanf("%c",&c); } p->link=NULL;}voidwritelink(nodelinkhead) {nodelinkq; if(head->link==NULL)printf("Thislinkisempty。"); for(q=head->link;q;q=q->link) printf("%c",q->a); p
5、rintf(""); }int insert(nodelinkhead,chark1,chark2) {nodelinkp,q; p=head->link; while(p->a!=k1&&p) p=p->link; if(p){q=(nodelink)malloc(sizeof(node)); q->a=k2; q->link=p->link; p->link=q;return1;28 } else { printf("Thereisno%c",k1);
6、return0; }}int delete(nodelinkhead,chark) {nodelinkp,q; q=head; p=head->link; while(((p->a)!=k)&&p){ q=q->link; p=p->link;} if(p){q->link=p->link;return1;} else{printf("Thereisno%c",k);return0;}}voidopside(nodelinkhead) { nodelinkp,q; p=hea
7、d->link; while(p->link){q=p->link; p->link=q->link;q->link=head->link; head->link=q;}}main() {chark1,k2,k3; nodelinkhead; head=(nodelink)malloc(sizeof(node)); head->link=NULL; readlink(head); if(head->link!=NULL) {printf("Buildlinkis:");writeli
8、nk(head);} if(head->link!=NULL) {printf("Pleaseinputacharyouwanttoinsertafter:"); k1=getch(); printf("%c",k1); printf("Pleaseinputacharyouwanttoinsert:"); k2=getch(); printf("%c",k2); if(ins
此文档下载收益归作者所有