注释说明以后再补,先给程序

#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语言 线性链表 节点的创建、添加和删除相关推荐

  1. TypeScript算法专题 - blog2 - 单链表节点的索引、结点删除与链表反转

    TypeScript算法专题 - [单链表2] 单链表节点的索引.结点删除与链表反转 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blog.c ...

  2. c语言求链表节点的删除,C语言实现链表节点的删除

    对链表节点进行增删改查是最基本的操作,这篇博客将会来实现对节点的删除.其他的操作可参考<c语言实现链表的基本操作>这篇博客.删除某个节点有两个类型: (1)删除i某个位置的节点: (2)判 ...

  3. 【web前端】JavaScript DOM元素(节点的创建appendChild(),删除removeChild(),修改replaceChild())

    创建新的 HTML 元素 (节点) - appendChild() 实例: <!DOCTYPE html> <html><head><meta charset ...

  4. 常见算法:C语言中链表的操作(创建,插入,删除,输出)

    链表中最简单的一种是单向链表,它包含两个域,一个信息域和一个指针域.这个链接指向列表中的下一个节点,而最后一个节点则指向一个空值. 一个单向链表包含两个值: 当前节点的值和一个指向下一个节点的链接 一 ...

  5. jQuery根据当前节点元素找到父子、兄弟节点元素进行添加或删除

    目录 1.查找父子.兄弟节点元素 1)父级 2)子级 3)同级 2.添加删除选中的dom元素 jQuery根据ID删除元素 jquery的删除属性的方法 1.查找父子.兄弟节点元素 在操作DOM元素的 ...

  6. JavaScript学习笔记:创建、添加与删除节点

    JavaScript学习笔记:创建.添加与删除节点 文章目录 JavaScript学习笔记:创建.添加与删除节点 一.DOM对象节点类型 二.创建节点 1.创建元素节点 2.创建文本节点 3.创建属性 ...

  7. free释放链表节点崩溃_【链表6】lt;最新gt;初识链表(link list)

    文/Edward 回顾之前讲述的链接两个结构体节点的内容,我们可以简单的将一些存储对象数据的结构体变量链接到一起,然后再去通过next指针遍历整个数据链,这就类似于将一些毫无关联的结构体变量链接成了一 ...

  8. Winform中对自定义xml配置文件进行Xml节点的添加与删除

    场景 Winform中自定义xml配置文件后对节点进行读取与写入: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/10053213 ...

  9. TypeScript算法专题 - blog4 - 单链表节点的两-两翻转(两两一组逆序)

    TypeScript数据结构与算法专题 - [单链表4] 单链表节点的`两-两`反转的实现 李俊才 CSDN:jcLee95 邮箱:291148484@163.com 专题目录:https://blo ...

最新文章

  1. docker rabbitmq php扩展,Docker开启RabbitMQ延时消息队列
  2. mysql 检查点_my05_mysql检查点简述
  3. 这6种编码方法,你掌握了几个?
  4. 使用visual studio 2013读取.mat文件
  5. 自己动手架设linux下Web服务器(图)6
  6. draggable columns vs copy column name in phpMyAdmin
  7. JavaSE中容易忽视的坑
  8. 文科女生转行软件测试之路
  9. FileReader 对象实现图片预览
  10. 怎样设定目标(三)—— 目标设定前的准备
  11. 重磅 | 逆天操作,修图神器Photoshop,真的可以,完美移植到手机上了
  12. oracle中的递归查询
  13. 梦笔记:又是个次日预言梦
  14. TensorFlow2.0教程-使用keras训练模型
  15. inter-因特尔-官网
  16. Mantis 管理Bug
  17. uni-app 自定义导航栏 图片按钮
  18. 财务和计算机操作方面的专业知识,会计基础的学习方法
  19. 1.20 JQuery3:动画和特效
  20. 搭建图片加密平台,扫码支付后简单获取密码

热门文章

  1. IDEA如何使用Drop Frame退回上一步Debug
  2. 推荐系统三十六式(刑无刀)学习笔记(三)
  3. C#中TreeView树配图片
  4. Android仿QQ锁屏状态下消息提醒(震动+提示音)
  5. DEJA_VU3D - Cesium功能集 之 078-对象材质:图片轨迹线
  6. imperva agent 的重新注册
  7. pg_restore恢复备份(记录一下)
  8. 【学习笔记】编译Linux内核(下)---KConfig、Makefile详解以及ARM平台Linux内核的编译
  9. 设置vscode默认打开浏览器为谷歌
  10. Windows操作系统安全加固基线检测脚本