3数据结构实验链表答案.doc
文本预览下载声明
实 验 报 告
院(系):信息科学与技术学院 课程名称:数据结构 日期:
班级 学号 实验室 专业 姓名 计算机号 实验名称 线性链表的运算 成绩评定 所用软件 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)
显示全部