c语言链表代码大全,C语言实现链表
/*
* main.c
* 链表
* Created on: Oct 29, 2010
* Author: jenson
*/
#include
#include
struct chain {
int value;
struct chain *next;
};
struct chain *create();
struct chain * insert(struct chain *head, int a, int b);
struct chain * delete(struct chain *head, int a);
void display(struct chain * head);
int main() {
struct chain *q, *head;
int a, b;
q = create();
head = q;
display(q);
printf("\n请输入的表元素数据位于哪个数据之前:");
scanf("%d", &a);
printf("\n请输入所要插入的数据:");
scanf("%d", &b);
q = insert(head, a, b);
display(q);
printf("\n请输入所要删除的数据:");
scanf("%d", &b);
head = q;
q = delete(head, b);
display(q);
free(q);
return 0;
}
struct chain * create() {
struct chain * head, *tail, *p;
int x;
head = tail = NULL;
int i = 0;
for (i = 0; i < 4; i++) {
printf("insert data %d:", i);
scanf("%d", &x);
p = (struct chain *) malloc(sizeof(struct chain));
if (p == NULL) {
perror("malloc");
exit(1);
}
p->value = x;
p->next = NULL;
if (head == NULL) {
head = tail = p;
} else {
tail = tail->next = p;
}
}
return head;
}
struct chain * insert(struct chain *head, int a, int b) {
struct chain *p, *q, *s;
s = (struct chain *) malloc(sizeof(struct chain));
if (s == NULL) {
perror("insert create");
exit(1);
}
s->value = b;
if (head == NULL) {
head = s;
s->next = head;
}
if (head->value == a) {
s->next = head;
head = s;
} else {
p = head;
while ((p->value != a) && (p->next != NULL)) {
q = p;
p = p->next;
}
if (p->value == a) {
q->next = s;
s->next = p;
} else {//插入节点s作为表尾
p->next = s;
s->next = NULL;
}
}
return head;
}
struct chain * delete(struct chain *head, int a) {
struct chain *p, *q;
if (head == NULL) {
perror("空链表,退出\n");
exit(1);
} else if (head->value == a) {//第一个节点为a节点
p = head;
head = p->next;
} else {
p = head;
while (p->value != a && p->next != NULL) {
q = p;
p = p->next;
}
if (p->value != a) {
printf("没有找到节点%d\n", a);
} else {
q->next = p->next;
free(p);
}
}
return head;
}
void display(struct chain * head) {
if (head != NULL) {
struct chain * p;
p = head;
while (p != NULL) {
printf("%d\t", p->value);
p = p->next;
}
}
}
c语言链表代码大全,C语言实现链表相关推荐
- c 语言整人代码大全,C 语言整人代码大全.doc
C 语言整人代码大全 C 语言整人代码大全 WScript.Echo("嘿,谢谢你打开我哦,我等你很久 拉!"&TSName) WScript.Echo("你是可 ...
- c语言分手代码大全,C语言代码大全
从今天开始,我将C语言的代码实例从发表在博客上.供技术交流.比较基础,遵循循序渐进的原则,由简单到复杂,为以后的程序员生涯打好基础. 1.编写一个C程序输出以下信息. **************** ...
- c语言编程代码大全(c语言简单代码大全)
html代码和c语言等编程语言有什么联系吗? HTML叫做超文本标记语言(标准通用标记语言下的一个应用)或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言. 怎么修改C语 ...
- c语言指针代码大全,C语言之指针(示例代码)
五.指针: 5.1.指针也是一种变量,拥有所有变量所拥有的所有的属性. 5.2.用于访问存储空间. 5.2.1.使用变量名进行存储空间的访问是比指针进行的访问更安全的. 5.2.2.在变量名无法使用的 ...
- c语言迷宫代码大全,C语言---迷宫游戏 代码
//10行10列的数组地图 char map[10][10] = { //10行10列的数组地图 {'#','#','#','#','#','#','#','#','#','#'},//0 {'#', ...
- 代码大全 MSIL语言程序设计
.NET平台的编译器会将高级语言(C#,VB.NET,F#)编译成MSIL(微软中间语言)格式.熟悉MSIL语言,可以读懂一些加密程序混淆过的算法,这些算法几乎不能还原成高级语言,但是可以还原成MSI ...
- 取消预约的c语言代码大全,c语言学习宝典2020最新手机版
<c语言宝典2020最新手机版>是一款专注于计算机二级.C语言编译器的教学软件,无论您是在校大学生,还是职业学员,或者其他开发人员,本软件都旨在全面提高您的C语言编程思想和开发实力,使您能 ...
- python叫什么语言-Python代码是什么语言
Python代码是一种计算机程序设计语言,是一种动态的.面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Python代码是 ...
- 简单c语语言游戏教案大全,大班语言活动教案大全简单趣味
从小培养幼儿学说普通话的兴趣.同时家长应注意用规范的语言来与幼儿进行日常交谈. 以下是小编精心收集整理的幼儿园大班语言活动方案,下面小编就和大家分享,来欣赏一下吧. 幼儿园大班语言活动方案1 活动目标 ...
最新文章
- ON REG EXPRESSION.SYNTAX
- 计算机游戏88关,天天象棋88关怎么过 闯关模式第88关图文攻略
- Fabric--区块链应用开发
- C# Winform程序中使用TeeChart实现简单的图表展示
- u3d 模版测试 失败_基于Python的HTTP接口自动化测试框架实现
- 【STM32】 Keil介绍、下载、安装与注册
- Windows环境下通过Git来管理自己的Android代码
- 阿里巴巴对Java编程【常量定义】的规约
- Android零基础入门第31节:几乎不用但要了解的AbsoluteLayout绝对布局
- 【机房重构】组合查询--存储过程
- GPCP全球月降水量数据下载与读取
- 做网站买主机还是服务器,做网站买主机还是服务器
- 【转载】ARX程序再VS2002中的调试初探
- Google Chrome浏览器模拟设置不同分辨率
- DICOM中窗宽窗位含义
- v-inline-date,类似携程,飞猪,带价格的时间选择
- 微信小程序code和其他内容的获取
- 你真的会解决android ANR 问题吗?
- VMware安装ubuntu kylin
- 【福尔摩斯的约会】-PAT
热门文章
- jQuery lazyload插件详解和问题解答
- 00020970-0000-0000-C000-000000000046
- [转]半角全角互转函数[JS版 VBS版]
- Qt 事件处理机制-qt源码解读
- IOS之使用AwesomeMenu框架令人惊叹的菜单
- 外观模式和代理模式的联系和区别_java23种设计模式-结构型模式之外观模式
- python封装成可执行的小程序_Python打包小程序
- 设置edittext不自动获取焦点
- foreach jdk8 递归_[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
- Android开发之自定义ImageView圆角图片的方法