C语言 线性链表 节点的创建、添加和删除
注释说明以后再补,先给程序
#include <stdio.h>
#include <stdlib.h>typedef struct svit
{int x ; struct svit *next ;
} s ;s *add (s *hd, int m)
{s *p = NULL, *pr = hd; int x; p = (s *)malloc(sizeof(s)) ; if (p == NULL) { printf("error\n") ; exit (0) ; } if (hd == NULL) { hd = p ; } else { while (pr->next != NULL) { pr = pr->next ; } pr->next = p ; } //printf( "输入第%d个整数:", m) ; scanf("%d", &x) ; p->x = x ; p->next = NULL ; return hd ;
}void show (s *hd)
{s *p = hd; int j = 1; while (p != NULL) {printf("节点:%d 数据:%d\n", j , p->x) ; p = p->next ; j++ ; }
}void up (s *hd)
{s *p = hd , *pr = NULL; while (p != NULL) { pr = p ; p = p->next ; free (pr) ; }
}s * sc (s *hd, int a)
{s *p = hd, *pr = hd; if (hd == NULL) { printf("为空表\n") ; return (hd) ; } while (p->x != a && p->next != NULL) { pr = p ; p = p->next; } if (p->x == a) { if (p == hd) { hd = p->next ; } else { pr->next = p->next ; } free(p) ; } else { printf("未找到\n") ; } return hd ;
}s * tj (s *hd, int a)
{s *p = hd, *pr = hd, *t = NULL; t = (s *)malloc(sizeof(s)) ; if (t == NULL) { printf("error\n") ; exit (0) ; } t->x = a ; t->next = NULL ; if (hd == NULL) { hd = t ; } else { while (a > p->x && p->next != NULL) { pr = p ; p = p->next ; } if (a <= p->x) { if (p == hd) { t->next = p ; hd = t ; } else { t->next = p ; pr->next = t ; } } else { p->next = t ; } } return hd ;
}int jy (int x, int n)
{while (x != 1) { while (getchar() != '\n') ; printf("输入无效,请重新输入:\n") ; x = scanf("%d", &n) ; } return n ;
}void mu(s *hd)
{int b, x, s; printf("选择你想进行的操作,并输入你想进行的操作前的序号:\n1:删除节点\n2:添加节点\n3:退出程序") ; s = scanf("%d", &b) ; b = jy(s, b) ; if (b == 1) { printf("请输入你要删除的节点数据:\n") ; s = scanf("%d", &x) ; x = jy(s, x) ; show(sc(hd, x)) ; } else if (b == 2) { printf("请输入你要添加的节点数据:") ; s = scanf("%d", &x) ; x = jy(s, x) ; show(tj(hd,x)) ; } else if (b == 3) { exit (0) ; } else { printf("输入无效\n") ; mu(hd) ; }
} void main(void)
{s *hd = NULL; int n, i = 0, x = 0; char j; printf("输入想输入数的个数n:") ; x = scanf("%d", &n) ; n = jy(x, n) ; printf("输入%d个整数:", n) ; for ( ; i<n; i++) { hd = add(hd,i+1) ; } show(hd) ; printf("%d个节点\n", i) ; mu(hd) ; up(hd) ;
}
C语言 线性链表 节点的创建、添加和删除相关推荐
- TypeScript算法专题 - blog2 - 单链表节点的索引、结点删除与链表反转
TypeScript算法专题 - [单链表2] 单链表节点的索引.结点删除与链表反转 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.c ...
- c语言求链表节点的删除,C语言实现链表节点的删除
对链表节点进行增删改查是最基本的操作,这篇博客将会来实现对节点的删除.其他的操作可参考<c语言实现链表的基本操作>这篇博客.删除某个节点有两个类型: (1)删除i某个位置的节点: (2)判 ...
- 【web前端】JavaScript DOM元素(节点的创建appendChild(),删除removeChild(),修改replaceChild())
创建新的 HTML 元素 (节点) - appendChild() 实例: <!DOCTYPE html> <html><head><meta charset ...
- 常见算法:C语言中链表的操作(创建,插入,删除,输出)
链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域.这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值. 一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接 一 ...
- jQuery根据当前节点元素找到父子、兄弟节点元素进行添加或删除
目录 1.查找父子.兄弟节点元素 1)父级 2)子级 3)同级 2.添加删除选中的dom元素 jQuery根据ID删除元素 jquery的删除属性的方法 1.查找父子.兄弟节点元素 在操作DOM元素的 ...
- JavaScript学习笔记:创建、添加与删除节点
JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...
- free释放链表节点崩溃_【链表6】lt;最新gt;初识链表(link list)
文/Edward 回顾之前讲述的链接两个结构体节点的内容,我们可以简单的将一些存储对象数据的结构体变量链接到一起,然后再去通过next指针遍历整个数据链,这就类似于将一些毫无关联的结构体变量链接成了一 ...
- Winform中对自定义xml配置文件进行Xml节点的添加与删除
场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...
- TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)
TypeScript数据结构与算法专题 - [单链表4] 单链表节点的`两-两`反转的实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blo ...
最新文章
- docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列
- mysql 检查点_my05_mysql检查点简述
- 这6种编码方法,你掌握了几个?
- 使用visual studio 2013读取.mat文件
- 自己动手架设linux下Web服务器(图)6
- draggable columns vs copy column name in phpMyAdmin
- JavaSE中容易忽视的坑
- 文科女生转行软件测试之路
- FileReader 对象实现图片预览
- 怎样设定目标(三)—— 目标设定前的准备
- 重磅 | 逆天操作,修图神器Photoshop,真的可以,完美移植到手机上了
- oracle中的递归查询
- 梦笔记:又是个次日预言梦
- TensorFlow2.0教程-使用keras训练模型
- inter-因特尔-官网
- Mantis 管理Bug
- uni-app 自定义导航栏 图片按钮
- 财务和计算机操作方面的专业知识,会计基础的学习方法
- 1.20 JQuery3:动画和特效
- 搭建图片加密平台,扫码支付后简单获取密码