45fan.com - 路饭网
首页
路由器设置
无线路由器
路由器密码
网络频道
手机频道
电脑频道
图库频道
问答中心
搜索:
智能搜索
搜索标题
您的位置
:
主页
>
电脑频道
>
电脑教程
> 阅读资讯:实现单链表的方法
实现单链表的方法
2016-09-06 13:08:48 来源:www.45fan.com 【
大
中
小
】
实现单链表的方法
/*
*
*File:Main.c
*Descript:单链表操作
*Author:Red_angelX
*/
#
include<stdio.h>
#
defineMAXNUM100
/*
*
*学生结构体链表
*
*/
typedefstructstudent
{
int
number
;
charname[
10
];
intscore;
//
新增链表指针
structstudent
*
next
;
}student;
/*
*
*创建链表
*
*/
student
*
create()
{
intn
,
i;
student
*
head
,*
preview
,*
current
;
/*
head表头preview前一个current当前
*/
if
((head
=
(student
*
)(malloc(
sizeof
(student))))
==
NULL
)
{
printf
(
"
无法分配内存
"
);
exit
(
0
);
}
head
->
next
=
NULL
;
/*
表头置空初始化
*/
preview
=
head;
/*
preview指向表头
*/
printf
(
"
请输入学生数:
"
);
scanf(
"
%d
"
,&
n);
for
(i
=
0
;i
<
n;i
++
)
{
if
((
current
=
(student
*
)(malloc(
sizeof
(student))))
==
NULL
)
{
printf
(
"
无法分配内存
"
);
exit
(
0
);
}
preview
->
next
=
current
;
/*
把前一个节点指向当前节点,连接所有链表
*/
printf
(
"
请输入学生%d的数据:
"
,
i
+
1
);
printf
(
"
学号:
"
);
scanf(
"
%d
"
,&
current
->
number
);
printf
(
"
姓名:
"
);
scanf(
"
%s
"
,&
current
->
name);
printf
(
"
成绩:
"
);
scanf(
"
%d
"
,&
current
->
score);
current
->
next
=
NULL
;
preview
=
current
;
}
return
(head);
}
/*
*
*查找节点
*
*/
voidfind(student
*
stu)
{
intx;
student
*
head;
printf
(
"
请输入要查找学生的学号:
"
);
scanf(
"
%d
"
,&
x);
head
=
stu;
while
(head
&&
head
->
number
!=
x)
{
head
=
head
->
next
;
/*
指向下条记录
*/
}
if
(head)
{
printf
(
"
学号姓名成绩
"
);
printf
(
"
%6d
"
,
head
->
number
);
printf
(
"
%s
"
,
head
->
name);
printf
(
"
%6d
"
,
head
->
score);
}
else
{
printf
(
"
没找到!
"
);
}
}
/*
*
*插入节点
*就当往最后插入了
*
*/
voidinsert(student
*
stu)
{
inti
,
n;
student
*
head
,*
current
;
printf
(
"
请插入学生数:
"
);
scanf(
"
%d
"
,&
n);
head
=
stu;
//
把head移动到最后
while
(head
->
next
)
head
=
head
->
next
;
for
(i
=
0
;i
<
n;i
++
)
{
if
((
current
=
(student
*
)(malloc(
sizeof
(student))))
==
NULL
)
{
printf
(
"
无法分配内存
"
);
exit
(
0
);
}
head
->
next
=
current
;
printf
(
"
请输入学生%d的数据:
"
,
i
+
1
);
printf
(
"
学号:
"
);
scanf(
"
%d
"
,&
current
->
number
);
printf
(
"
姓名:
"
);
scanf(
"
%s
"
,&
current
->
name);
printf
(
"
成绩:
"
);
scanf(
"
%d
"
,&
current
->
score);
current
->
next
=
NULL
;
head
=
current
;
}
}
/*
*
*删除节点
*
*/
voiddelete(student
*
stu)
{
intx;
student
*
head
,*
temp;
printf
(
"
输入要删除成绩学生的学号:
"
);
scanf(
"
%d
"
,&
x);
head
=
stu;
while
(head
->
next
&&
head
->
next
->
number
!=
x)
{
head
=
head
->
next
;
/*
指向下条记录
*/
}
if
(head
->
next
)
{
temp
=
head
->
next
;
head
->
next
=
head
->
next
->
next
;
free(temp);
printf
(
"
已删除!
"
);
}
else
{
printf
(
"
无此学生成绩,无法删除!
"
);
}
}
/*
*
*主函数,链表操作
*
*Author:Red_angelX
*/
voidmain()
{
student
*
stu;
intk;
while
(
1
)
{
//
clrscr();
printf
(
"
******************************
"
);
printf
(
"
|学生成绩管理|
"
);
printf
(
"
|*******************************|
"
);
printf
(
"
|1登记成绩|
"
);
printf
(
"
|2查询成绩|
"
);
printf
(
"
|3插入成绩|
"
);
printf
(
"
|4删除成绩|
"
);
printf
(
"
|0退出程序|
"
);
printf
(
"
|*******************************|
"
);
printf
(
"
|CodeByRed_angelX|
"
);
printf
(
"
*******************************
"
);
printf
(
"
"
);
printf
(
"
请输入选择的功能号:
"
);
scanf(
"
%d
"
,&
k);
switch
(k)
{
case
1
:
stu
=
create();
break
;
case
2
:
find(stu);
break
;
case
3
:
insert(stu);
break
;
case
4
:
delete(stu);
break
;
case
0
:
exit
(
0
);
default
:
printf
(
"
选择错误!
"
);
}
}
}
本文地址:
http://www.45fan.com/dnjc/73205.html
Tags:
实现
基本操作
单链表
编辑:路饭网
上一篇:
如何处理Java程序中的内存漏洞?
下一篇:
怎么样把XP与Vista都装在C盘?
相关文章列表
怎么样在Excel中使用方方格子实现一键四
如何在PPT中实现缩略图一点即可大图满屏
如何在excel中使用函数indirect实现嵌套
怎么样通过zeno实现加速屏幕显示功能?
在怎么PPT演示文稿中实现自定义放映的方
如何实现在windows10上安装mysql?
如何实现Win10系统虚拟机设置共享本地磁
将win10系统设备实现同步书签的方法
在ppt中使用书签实现音画字同步的方法
在excel中使用vba实现箱号换散鞋模板的功
推广内容
推荐阅读
热门推荐
推荐文章
·
如何为Excel2010表格中的图表添加说明文
·
Win7系统看电影时,如果有QQ消息,电影声
·
WPS文字文档中,如何给指定的文字添加边
·
盘点制作PPT时常用的一些快捷键大全
·
分享一组Win8系统不太为人所知的小技巧
·
系统遇到特殊故障时,如何进入Win10系统
·
电脑系统损坏要如何修复?修复win10系统
·
想找回关闭的网页该怎么办?怎样查看360
·
实现电脑每天定时关机,借助Win7任务计划
·
什么是Telnet协议?Win7如何开启Telnet服
·
电脑时间出现差错时如何进行北京时间校准
·
电脑运行速度慢,C盘空间越来越小,如何
关于我们
|
联系我们
|
友情链接
|
网站地图
|
Sitemap
|
App
|
返回顶部