单链表操作实验报告
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
六.程序源码wk.baidu.com
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(linklist)
#define NULL 0
typedef struct node
{
int data;
struct node *next;
}linklist;
linklist *Linkcreat()
{
int x;
linklist *head,*p,*rear;
printf("\t你选择的是尾插法建立链表功能:\n");
head=(struct node*)malloc(LEN);
head->data=-999;
rear=head;
printf("\t请输入一组正整数以0结束输入:\n\t");
}
void Linkprint(linklist *head)
linklist *p;
p=head;
if(p==NULL)
printf("\t输出失败!\n");
printf("\t输出链表为:");
while(p->next!=NULL)
{
p=p->next;
printf("%3d",p->data);
}
if(p->next!=NULL)
{
q=p->next;
printf("\t删除成功!\n");
printf("\t删除的数据为:");
printf("%d\n",q->data);
p->next=q->next;
free(q);
}
else printf("\t删除失败!");
return(head);
单链表操作实验报告
一、实验目的
1.掌握单链表中结点结构的C描述。
2.掌握单链表的插入、删除和查询算法的设计。
二、实验内容
单链表插入、删除、查找等操作的程序。
4.界面分析
初始化:为单链表申请头结点空间,将单链表设置为空;
创建:(1)尾插法建立链表(2)查找单链表(3)尾插法插入单链表(4)删除节点(5输出单链表(6)退出
}
linklist *Linkdelete(linklist *head)
{
linklist *p,*q;
int i,j=1;
printf("\t输入要删除的位置:");
scanf("%d",&i);
p=head;
while((p->next!=NULL)&&(j<i)
{
p=p->next;
j++;
}
printf("\n");
}
int Select()
{
int k;
printf(" -------------------------------\n");
printf("\t1.建立单链表\n");
printf("\t2.查找单链表\n");
printf("\t3.插入结点\n");
printf("\t4.删除结点\n");
case 4:head=Linkdelete(head);Linkprint(head);break;
case 5:Linkprint(head);break;
case 6:exit(0);
}
}
}
五.测试结果
1.程序运行界面
5.主要程序说明
(1)初始化单链表函数
linklist *Linkcreat()
(2)查找单链表函数
void Linksearch(linklist *head)
(3)尾插法插入单链表函数
linklist *Linkinsert(linklist *head)
(4)删除节点函数
linklist *Linkdelete(linklist *head)
int x,i,j=1;
linklist *s,*q;
printf("\t你选择的是尾插法插入功能:\n");
printf("\t请输入要插入的位置:");
scanf("%d",&i);
printf("\t请输入要插入的数据:");
scanf("%d",&x);
s=(struct node*)malloc(LEN);
}
void Linksearch(linklist *head)
int x;
int i=0;
linklist *p;
printf("\t你选择的是查找功能:\n");
printf("\t请输入要查找节点的值:");
scanf("%d",&x);
p=head;while((p->next!=NULL)&&(p->data!=x))
printf("\t5.输出单链表\n");
printf("\t6.退出\n");
do{
printf("\t请输入选择的功能:");
scanf("%d",&k);
printf(" -------------------------------\n");
}while((k<1)||(k>6));
return(k);
s->data=x;
for(q=head;(q!=NULL)&&(j<=i-1);j++)
q=q->next;
if(q!=NULL)
{
printf("\t插入成功!\n");
s->next=q->next;
q->next=s;
}
else printf("\t插入失败!\n");
return(head);
scanf("%d",&x);
while(x!=0)
{
p=(struct node*)malloc(LEN);
p->data=x;
rear->next=p;
rear=p;
scanf("%d",&x);
}
rear->next=NULL;
printf("\t建立链表成功!\n");
return(head);
}
void main()
{
int n;
linklist *head;
while(1)
{
n=Select();
switch(n)
{
case 1:head=Linkcreat();Linkprint(head);break;
case 2:Linksearch(head);break;
case 3:head=Linkinsert(head);Linkprint(head);break;
{
p=p->next;
i++;
}
if(p->data==x)
{
printf("\t查找成功!\n");
printf("\t输出查找的数据所在位置为:%d\n",i);
}
else printf("\t查找结点不存在!\n");
}
linklist *Linkinsert(linklist *head)
{
#include<stdio.h>
#include<stdlib.h>
#define LEN sizeof(linklist)
#define NULL 0
typedef struct node
{
int data;
struct node *next;
}linklist;
linklist *Linkcreat()
{
int x;
linklist *head,*p,*rear;
printf("\t你选择的是尾插法建立链表功能:\n");
head=(struct node*)malloc(LEN);
head->data=-999;
rear=head;
printf("\t请输入一组正整数以0结束输入:\n\t");
}
void Linkprint(linklist *head)
linklist *p;
p=head;
if(p==NULL)
printf("\t输出失败!\n");
printf("\t输出链表为:");
while(p->next!=NULL)
{
p=p->next;
printf("%3d",p->data);
}
if(p->next!=NULL)
{
q=p->next;
printf("\t删除成功!\n");
printf("\t删除的数据为:");
printf("%d\n",q->data);
p->next=q->next;
free(q);
}
else printf("\t删除失败!");
return(head);
单链表操作实验报告
一、实验目的
1.掌握单链表中结点结构的C描述。
2.掌握单链表的插入、删除和查询算法的设计。
二、实验内容
单链表插入、删除、查找等操作的程序。
4.界面分析
初始化:为单链表申请头结点空间,将单链表设置为空;
创建:(1)尾插法建立链表(2)查找单链表(3)尾插法插入单链表(4)删除节点(5输出单链表(6)退出
}
linklist *Linkdelete(linklist *head)
{
linklist *p,*q;
int i,j=1;
printf("\t输入要删除的位置:");
scanf("%d",&i);
p=head;
while((p->next!=NULL)&&(j<i)
{
p=p->next;
j++;
}
printf("\n");
}
int Select()
{
int k;
printf(" -------------------------------\n");
printf("\t1.建立单链表\n");
printf("\t2.查找单链表\n");
printf("\t3.插入结点\n");
printf("\t4.删除结点\n");
case 4:head=Linkdelete(head);Linkprint(head);break;
case 5:Linkprint(head);break;
case 6:exit(0);
}
}
}
五.测试结果
1.程序运行界面
5.主要程序说明
(1)初始化单链表函数
linklist *Linkcreat()
(2)查找单链表函数
void Linksearch(linklist *head)
(3)尾插法插入单链表函数
linklist *Linkinsert(linklist *head)
(4)删除节点函数
linklist *Linkdelete(linklist *head)
int x,i,j=1;
linklist *s,*q;
printf("\t你选择的是尾插法插入功能:\n");
printf("\t请输入要插入的位置:");
scanf("%d",&i);
printf("\t请输入要插入的数据:");
scanf("%d",&x);
s=(struct node*)malloc(LEN);
}
void Linksearch(linklist *head)
int x;
int i=0;
linklist *p;
printf("\t你选择的是查找功能:\n");
printf("\t请输入要查找节点的值:");
scanf("%d",&x);
p=head;while((p->next!=NULL)&&(p->data!=x))
printf("\t5.输出单链表\n");
printf("\t6.退出\n");
do{
printf("\t请输入选择的功能:");
scanf("%d",&k);
printf(" -------------------------------\n");
}while((k<1)||(k>6));
return(k);
s->data=x;
for(q=head;(q!=NULL)&&(j<=i-1);j++)
q=q->next;
if(q!=NULL)
{
printf("\t插入成功!\n");
s->next=q->next;
q->next=s;
}
else printf("\t插入失败!\n");
return(head);
scanf("%d",&x);
while(x!=0)
{
p=(struct node*)malloc(LEN);
p->data=x;
rear->next=p;
rear=p;
scanf("%d",&x);
}
rear->next=NULL;
printf("\t建立链表成功!\n");
return(head);
}
void main()
{
int n;
linklist *head;
while(1)
{
n=Select();
switch(n)
{
case 1:head=Linkcreat();Linkprint(head);break;
case 2:Linksearch(head);break;
case 3:head=Linkinsert(head);Linkprint(head);break;
{
p=p->next;
i++;
}
if(p->data==x)
{
printf("\t查找成功!\n");
printf("\t输出查找的数据所在位置为:%d\n",i);
}
else printf("\t查找结点不存在!\n");
}
linklist *Linkinsert(linklist *head)
{