单链表实验内容

专业 学号 姓名 吴兴平 教师评定_________________

实验题目 单链表操作

一、 实验内容

1)建立带表头结点的单链表;

(2)输出单链表中所有结点的数据域值;

(3)输入x,y 在第一个数据域值为x 的结点之后插入结点y ,若无结点x ,则在表尾插入结点y;

(4)输入k ,删除单链表中所有的结点k ,并输出被删除结点的个数。

二、实验代码

#define NULL 0

typedef struct node{int data;

struct node *link;}LNode; /*结点结构定义*/

LNode *createfirst()

{

LNode *s,*h;/*前插法建立带表头结点的单链表*/

int x,tag;

printf("input end flag:");

scanf("%d",&tag);

h=NULL;

printf("input number x:");

scanf("%d",&x);

while(x!=tag)

{

s=(LNode*)malloc(sizeof(LNode));

s->data=x;

s->link=h;

h=s;

scanf("%d",&x);

}

return h;

}

void printlist(LNode *h) /*显示输出以h 为头指针的单链表各结点数据域值*/

{ LNode *p;

p=h;

while(p!=NULL)

{ printf("%d ",p->data);

p=p->link;

}

printf("\n");

}

void insertlist(LNode *h,int x,int y)

{

LNode *p,*q,*s;/*输入x,y 在第一个数据域值为x 的结点之后插入结点y ,若无结点x ,则在表尾插入结点y;*/

s=(LNode*)malloc(sizeof(LNode));

s->data=y;

p=h->link;

q=h;

while(q->data!=x&&p->link!=NULL)

{

q=p;p=p->link;}

if(q->data==x)

{

q->link=s;s->link=p;

}

else

{p->link=s;s->link=NULL;}

}

void deletelist(LNode *h,int k)

{

LNode *s;/*输入k ,删除单链表中所有的结点k ,并输出未被删除的结点。*/

while(h->link)

{

if(h->link->data==k)

{

s=h->link;

h->link=s->link;

free(s);

}

else h=h->link;

}

}

main()

{ LNode *h;

int x,y,k;

h=createfirst(); printlist(h);

printf("insert:x,y");

scanf("%d,%d",&x,&y); insertlist(h,x,y); printlist(h);

printf("delete number:"); scanf("%d",&k); deletelist(h,k); printlist(h);

getch();

}

三、运行过程

1.输入数据

2.插入数据

3.删除数据

四、实验心得

通过这个实验,对单链表知识有更深的认识了,也看到自己在C 语言上的不足。

专业 学号 姓名 吴兴平 教师评定_________________

实验题目 单链表操作

一、 实验内容

1)建立带表头结点的单链表;

(2)输出单链表中所有结点的数据域值;

(3)输入x,y 在第一个数据域值为x 的结点之后插入结点y ,若无结点x ,则在表尾插入结点y;

(4)输入k ,删除单链表中所有的结点k ,并输出被删除结点的个数。

二、实验代码

#define NULL 0

typedef struct node{int data;

struct node *link;}LNode; /*结点结构定义*/

LNode *createfirst()

{

LNode *s,*h;/*前插法建立带表头结点的单链表*/

int x,tag;

printf("input end flag:");

scanf("%d",&tag);

h=NULL;

printf("input number x:");

scanf("%d",&x);

while(x!=tag)

{

s=(LNode*)malloc(sizeof(LNode));

s->data=x;

s->link=h;

h=s;

scanf("%d",&x);

}

return h;

}

void printlist(LNode *h) /*显示输出以h 为头指针的单链表各结点数据域值*/

{ LNode *p;

p=h;

while(p!=NULL)

{ printf("%d ",p->data);

p=p->link;

}

printf("\n");

}

void insertlist(LNode *h,int x,int y)

{

LNode *p,*q,*s;/*输入x,y 在第一个数据域值为x 的结点之后插入结点y ,若无结点x ,则在表尾插入结点y;*/

s=(LNode*)malloc(sizeof(LNode));

s->data=y;

p=h->link;

q=h;

while(q->data!=x&&p->link!=NULL)

{

q=p;p=p->link;}

if(q->data==x)

{

q->link=s;s->link=p;

}

else

{p->link=s;s->link=NULL;}

}

void deletelist(LNode *h,int k)

{

LNode *s;/*输入k ,删除单链表中所有的结点k ,并输出未被删除的结点。*/

while(h->link)

{

if(h->link->data==k)

{

s=h->link;

h->link=s->link;

free(s);

}

else h=h->link;

}

}

main()

{ LNode *h;

int x,y,k;

h=createfirst(); printlist(h);

printf("insert:x,y");

scanf("%d,%d",&x,&y); insertlist(h,x,y); printlist(h);

printf("delete number:"); scanf("%d",&k); deletelist(h,k); printlist(h);

getch();

}

三、运行过程

1.输入数据

2.插入数据

3.删除数据

四、实验心得

通过这个实验,对单链表知识有更深的认识了,也看到自己在C 语言上的不足。


相关文章

  • 单链表的创建及操作
  • 山东师范大学 实 验 报 告 课 程: 数据结构 班 级: 2013级1班 实验序号: 116王海峰 姓 名: 王海峰 学 号: [1**********]6 实验日期:2014.3.25 题目: 单链表的创建及操作 一.实验目的和要求 ( ...查看


  • 单链表的定义及基本操作
  • 附件2: 北京理工大学珠海学院实验报告 ZHUHAI CAMPAUS OF BEIJING INSTITUTE OF TECHNOLOGY 班级 XXX 3班 学号 0123456 姓名 XXX 指导教师 XIAO FENG 成绩 实验题目 ...查看


  • 数据结构A教学大纲
  • 数据结构A 教学大纲 (Data Structures A) 课程编号: 06311360 学 分: 5.0 学 时: 75 (其中:讲课学时:60 实验学时:0 上机学时:15) 先修课程:离散数学.程序设计基础.面向对象程序设计 适用专 ...查看


  • 抽象数据类型的实现
  • 第3章 抽象数据类型的实现 3.1 实验概要 实验项目名称: 抽象数据类型的实现 实验项目性质: 设计性实验 所属课程名称: 数据结构 实验计划学时: 6 3.2 实验目的 对某个具体的抽象数据类型,运用课程所学的知识和方法,设计合理的数据 ...查看


  • 数据结构上机实验
  • 数据结构上机实验 姓名: 学号: 院系: 指导教师: 1 数据结构上机实验报告 实验一 线性表 一. 实验目的 1. 熟悉线性表的顺序和链式存储结构 2. 掌握线性表的基本运算 3. 能够利用线性表的基本运算完成线性表应用的运算 二.实验内 ...查看


  • 数据结构线性表与链表实验论文
  • 数据结构 上机实验1 班级:计科1303 姓名:辛颖 学号:[1**********]24 一.实验题目:线性表 二.实验目的: 1.熟悉将算法转换为程序代码的过程: 2.了解顺序表的逻辑结构特性,熟悉掌握顺序表存储结构的C 语言描述方法: ...查看


  • 数据结构上机实验报告
  • 实验一:线性表的基本操作 [实验目的] 学习掌握线性表的顺序存储结构.链式存储结构的设计与操作.对顺序表建立.插入.删除的基本操作,对单链表建立.插入.删除的基本操作算法. [实验内容] 1. 顺序表的实践 1) 建立4个元素的顺序表s=s ...查看


  • 数据结构多项式
  • 中国地质大学长城学院 实践课程设计 题 目 学 院 专 业 班 级 姓 名 指导教师 用单链表表示一元多项式,并求2个一元多项式的和 中国地质大学长城学院 电子信息工程 电子1201 李月朋 李润亚 2014 年 12 月 31 日 一.实 ...查看


  • 约瑟夫环课程设计实验报告
  • <数据结构> 课程设计报告 课程名称: 课程设计题目: 姓名: 院系: 专业: 年级: 学号: 指导教师: <数据结构>课程设计 joseph环 计算机学院 2011年12月18日 目 录 1 课程设计的目的---- ...查看


热门内容