文档详情

3数据结构实验链表答案.doc

发布:2017-02-04约9.06千字共13页下载文档
文本预览下载声明
实 验 报 告 院(系):信息科学与技术学院 课程名称:数据结构 日期: 班级 学号 实验室 专业 姓名 计算机号 实验名称 线性链表的运算 成绩评定 所用软件 V C或TC 教师签名 实 验 目 的 掌握线性链表的基本概念 掌握线性链表的建立、插入和删除等方法。 掌握线性链表的基本算法。 实 验 总 结 一、程序: #include stdio.h #include stdlib.h typedef char elemtype; typedef struct node{ elemtype data; struct node *next; } NODE,*NODEPTR; NODEPTR createlistf() { char ch; NODEPTR head; NODE *p; head=(NODEPTR )malloc(sizeof(NODE)); head-next=0; ch=getchar(); while(ch!=\n) { p=(NODE *)malloc(sizeof(NODE)); p-data=ch; p-next=head-next; head-next=p; ch=getchar(); } return (head); } int InsLinkList(NODE *p, char x) { NODE *s; /* 定义指向结点类型的指针 */ s=(NODE *)malloc(sizeof(NODE)); /* 生成新结点 */ s-data=x; s-next=p-next; p-next=s; return 1; } void DelLinkList(NODE *p) { NODE *q; if(p-next!=0) { q=p-next; /* q指向p的后继结点 */ p-next=q-next; /* 修改p结点的指针域 */ free(q); } /* 删除并释放结点 */ } NODE *lbcz(NODE *h,int x) { NODE *p; p=h; while (p!=0 p-data!=x) p=p-next; return(p); } void printlink(NODE *h) {NODE *p; p=h-next; printf(\n); while (p!=0) {printf(%c,p-data); p=p-next; } printf(\n); } void main() {NODE *h,*p; char x; printf(\n头插法建立单链表,应包含字符a,以回车作为结束符\n); h=createlistf(); printf(\n建立的单链表为\n); printlink(h); printf(\n在链表中查找字符a\n); p=lbcz(h,a); printf(\n将字符k插入到字符a后面\n); InsLinkList(p,k); printf(\n插入字符后的链表为\n); printlink(h); printf(\n输入链表中被删除字符的前一个字符\n); scanf(%c,x); p=lbcz(h,x); printf(\n删除该字符后的一个字符\n); DelLinkList(p); printf(\n删除字符后的链表为\n); printlink(h); } 二、源代码以及输入数据输出结果为: #include stdio.h #include stdlib.h typedef int elemtype; typedef struct node{ elemtype data; struct node *next; } NODE,*NODEPTR; NODEPTR createlistf() { int ch; NODEPTR head; NODE *p; head=(NODEPTR )malloc(sizeof(NODE)); head-next=0; scanf(%d,ch); while(ch!=0)
显示全部
相似文档