/*

* 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语言实现链表相关推荐

  1. c 语言整人代码大全,C 语言整人代码大全.doc

    C 语言整人代码大全 C 语言整人代码大全 WScript.Echo("嘿,谢谢你打开我哦,我等你很久 拉!"&TSName) WScript.Echo("你是可 ...

  2. c语言分手代码大全,C语言代码大全

    从今天开始,我将C语言的代码实例从发表在博客上.供技术交流.比较基础,遵循循序渐进的原则,由简单到复杂,为以后的程序员生涯打好基础. 1.编写一个C程序输出以下信息. **************** ...

  3. c语言编程代码大全(c语言简单代码大全)

    html代码和c语言等编程语言有什么联系吗? HTML叫做超文本标记语言(标准通用标记语言下的一个应用)或超文本链接标示语言,是目前网络上应用最为广泛的语言,也是构成网页文档的主要语言. 怎么修改C语 ...

  4. c语言指针代码大全,C语言之指针(示例代码)

    五.指针: 5.1.指针也是一种变量,拥有所有变量所拥有的所有的属性. 5.2.用于访问存储空间. 5.2.1.使用变量名进行存储空间的访问是比指针进行的访问更安全的. 5.2.2.在变量名无法使用的 ...

  5. c语言迷宫代码大全,C语言---迷宫游戏 代码

    //10行10列的数组地图 char map[10][10] = { //10行10列的数组地图 {'#','#','#','#','#','#','#','#','#','#'},//0 {'#', ...

  6. 代码大全 MSIL语言程序设计

    .NET平台的编译器会将高级语言(C#,VB.NET,F#)编译成MSIL(微软中间语言)格式.熟悉MSIL语言,可以读懂一些加密程序混淆过的算法,这些算法几乎不能还原成高级语言,但是可以还原成MSI ...

  7. 取消预约的c语言代码大全,c语言学习宝典2020最新手机版

    <c语言宝典2020最新手机版>是一款专注于计算机二级.C语言编译器的教学软件,无论您是在校大学生,还是职业学员,或者其他开发人员,本软件都旨在全面提高您的C语言编程思想和开发实力,使您能 ...

  8. python叫什么语言-Python代码是什么语言

    Python代码是一种计算机程序设计语言,是一种动态的.面向对象的脚本语言,最初是用来编写自动化脚本的,随着版本的不断更新和语言新功能的添加,越来越多被用于独立的.大型项目的开发. Python代码是 ...

  9. 简单c语语言游戏教案大全,大班语言活动教案大全简单趣味

    从小培养幼儿学说普通话的兴趣.同时家长应注意用规范的语言来与幼儿进行日常交谈. 以下是小编精心收集整理的幼儿园大班语言活动方案,下面小编就和大家分享,来欣赏一下吧. 幼儿园大班语言活动方案1 活动目标 ...

最新文章

  1. ON REG EXPRESSION.SYNTAX
  2. 计算机游戏88关,天天象棋88关怎么过 闯关模式第88关图文攻略
  3. Fabric--区块链应用开发
  4. C# Winform程序中使用TeeChart实现简单的图表展示
  5. u3d 模版测试 失败_基于Python的HTTP接口自动化测试框架实现
  6. 【STM32】 Keil介绍、下载、安装与注册
  7. Windows环境下通过Git来管理自己的Android代码
  8. 阿里巴巴对Java编程【常量定义】的规约
  9. Android零基础入门第31节:几乎不用但要了解的AbsoluteLayout绝对布局
  10. 【机房重构】组合查询--存储过程
  11. GPCP全球月降水量数据下载与读取
  12. 做网站买主机还是服务器,做网站买主机还是服务器
  13. 【转载】ARX程序再VS2002中的调试初探
  14. Google Chrome浏览器模拟设置不同分辨率
  15. DICOM中窗宽窗位含义
  16. v-inline-date,类似携程,飞猪,带价格的时间选择
  17. 微信小程序code和其他内容的获取
  18. 你真的会解决android ANR 问题吗?
  19. VMware安装ubuntu kylin
  20. 【福尔摩斯的约会】-PAT

热门文章

  1. jQuery lazyload插件详解和问题解答
  2. 00020970-0000-0000-C000-000000000046
  3. [转]半角全角互转函数[JS版 VBS版]
  4. Qt 事件处理机制-qt源码解读
  5. IOS之使用AwesomeMenu框架令人惊叹的菜单
  6. 外观模式和代理模式的联系和区别_java23种设计模式-结构型模式之外观模式
  7. python封装成可执行的小程序_Python打包小程序
  8. 设置edittext不自动获取焦点
  9. foreach jdk8 递归_[Java 8] (8) Lambda表达式对递归的优化(上) - 使用尾递归 .
  10. Android开发之自定义ImageView圆角图片的方法