实验一 链表操作
执行对链表的创建,插入,删除,显示等操作
#include <stdlib.h>
#include <stdio.h>
struct LNode //链表节点定义
{
char c;
struct LNode *next;
};
struct LNode *head;
struct LNode *tail;
struct LNode *createlist()
{
printf("输入数据,中间以回车间隔,以#号结尾 \n");
struct LNode *node;
char c;
node = (struct LNode *)malloc(sizeof(struct LNode));
node->c ='#';
node->next = NULL;
tail=node;
head=tail;
scanf("%c",&c);
fflush(stdin);
while(c!='#')
{
struct LNode *node1;
node1=(struct LNode *)malloc(sizeof(struct LNode));
node1->c = c;
node1->next = NULL;
tail->next = node1;
tail = node1;
scanf("%c",&c);
fflush(stdin);
}
return node;
}
void showlist(struct LNode *head) //显示链表
{
printf("显示链表中所有元素 \n");
if(!tail)
{
printf("链表为空! \n");
exit(0);
}
struct LNode *p;
p=head->next;
while(p->c!='#')
{
printf("%c\n",p->c);
p=p->next;
if(!p)
break;
}
}
void insertnode()
{
printf("输入一个节点!\n");
struct LNode *p;
struct LNode *node;
node=(struct LNode *)malloc(sizeof(struct LNode));
p=tail;
char c;
scanf("%c",&c);
fflush(stdin);
p->next=node;
node->c=c;
node->next=NULL;
tail=node;
}
void delnode()
{
printf("删除一个节点!\n");
printf("请输入删除节点所处在的位置,如1,2,3...!\n");
int count;
int i=1;
scanf("%d",&count);
fflush(stdin);
struct LNode *p,*q;
q=head;
p=q->next;
while(i<=count)
{
if(i==count)
{
q->next=p->next;
p->next=NULL;
free(p);
break;
}
else
{
q=p;
p=p->next;
i++;
}
}
}
int Length_of_list()
{
int i=0;
struct LNode *position=head;
while (position != NULL)
{
position = position->next;
i++;
}
return i;
}
void menu()
{
printf ("****************************************************\n");
printf ("****************1.创建链表**************************\n");
printf ("****************2.插入结点**************************\n");
printf ("****************3.删除结点**************************\n");
printf ("****************4.显示所有节点**********************\n");
printf ("****************5.显示链表的长度**********************\n");
printf ("****************6.退出******************************\n");
printf ("*************************
***************************\n");
}
int main()
{
int x;
char rturn;
while(1)
{ system("cls");
menu();
printf("请选择功
执行对链表的创建,插入,删除,显示等操作
能:");
scanf("%d",&x);
fflush(stdin);
switch(x)
{
case 1: //创建链表
head = createlist();
printf("链表创建完成,是否继续(N退出,任意键继续)\n");
scanf("%c",&rturn);
if(rturn=='N')
exit(0);
break;
case 2://插入节点
insertnode();
printf("结点插入完成,是否继续(N退出,任意键继续)\n");
scanf("%c",&rturn);
if(rturn=='N')
exit(0);
break;
case 3:
delnode();
printf("结点删除完成,是否继续(N退出,任意键继续)\n");
scanf("%c",&rturn);
if(rturn=='N')
exit(0);
break;
case 4://显示所有节点
showlist(head);
printf("显示结点完成,是否继续(N退出,任意键继续)\n");
scanf("%c",&rturn);
if(rturn=='N')
exit(0);
break;
case 5:
printf("当前
链表的长度为:%d\n",Length_of_list());
scanf("%c",&rturn);
if(rturn=='N')
exit(0);
break;
case 6: //退出
return 0;
}
}
}
相关推荐:
- [专业资料]《蜜蜂之家》教学反思
- [专业资料]过去分词作定语和表语1
- [专业资料]苏州工业园区住房公积金贷款申请表
- [专业资料]保安管理制度及处罚条例细则
- [专业资料]2018年中国工程咨询市场发展现状调研及
- [专业资料]2015年电大本科《学前教育科研方法》期
- [专业资料]数字信号处理实验 matlab版 离散傅里叶
- [专业资料]“十三五”重点项目-虎杖白藜芦醇及功
- [专业资料]2015-2020年中国竹木工艺市场需求及投
- [专业资料]国际贸易理论与实务作业五:理论案例分
- [专业资料]财政部修订发布事业单位会计制度
- [专业资料]BCA蛋白浓度测定试剂盒(增强型)
- [专业资料]工程进度总计划横道图模板(通用版)
- [专业资料]七年级地理同步练习(天气与气候)
- [专业资料]X光安检机介绍火灾自动报警系统的组成
- [专业资料]衢州市人民政府办公室关于印发衢州市区
- [专业资料]经济全球化及其影响[1]
- [专业资料]质粒DNA限制性酶切图谱分析
- [专业资料]国家安全人民防线工作“六项”制度
- [专业资料]劳动力投入计划及保证措施
- 电子账册联网监管培训手册
- 人教版语文七年级上第1课《在山的那边
- 对我区担保行业发展现状的思考与建议
- 平面四边形网格自动生成方法研究
- 2016年党课学习心得体会范文
- 如何设置电脑定时关机
- 全球最美人妖排行榜新鲜出炉
- 社会实践调查报告及问卷
- Visual Basic习题集
- 《鱼我所欲也》课件2
- 浙江省会计从业资格考试试卷
- 全遥控数字音量控制的D 类功率放大器资
- 鞍钢宪法与后福特主义
- 电表的改装与校准实验报告(1)
- 2014年高考理科数学真题解析分类汇编:
- Windows 7 AIK 的使用
- 风电场全场停电事故应急处置方案
- 化工原理选填题题库(下)
- 关于产学研合作教育模式的学习与思考
- 西安先锋公馆项目前期定位报告




