1 #include <stdio.h>
  2 #include <stdlib.h>
  3 #define N 5
  4 /*N 假定数组长度为5*/
  5 typedef struct snode
  6 {
  7     int data;
  8     struct snode *next;
  9 } SNODE;
 10
 11 /*第一步,添加链表头信息*/
 12 SNODE *createhead(int a[])
 13 {
 14     SNODE *h,*p,*q;
 15 /*q为上一节点,p为当前节点*/
 16     int i;
 17     q=(SNODE *)malloc(sizeof(SNODE));
 18     h=q;
 19     for(i=0;i<N;i++)
 20      {
 21        p=(SNODE *)malloc(sizeof(SNODE));
 22        p->data = a[i];
 23        q->next=p;
 24        q=p;
 25      }
 26     q->next=0;
 27     return h;
 28 }
 29
 30 /*第二步打印链表中的元素*/
 31 void showstars(SNODE *h)
 32 {
 33     SNODE *p;
 34     p=h->next;
 35     while(p)
 36      {
 37        printf("%d 其地址为 %x\n",p->data,p);
 38        p=p->next;
 39      }
 40 }
 41
 42
 43 /*第三步删除/回收节点*/
 44 void revokeresource(SNODE *h)
 45 {
 46     SNODE *p,*q;
 47     p=h->next;
 48     while(p)
 49      {
 50     q=p->next;
 51       printf("哦,no~~~%d被回收了\n",p->data);
 52       free(p);
 53       p=q;
 54      }
 55    free(h);
 56 }
 57
 58 /*添加一个节点,目标在值为4的结点前添加一个结点,如果值为4的节点不存在,则在末尾添加一个结点*/
 59 void insert(SNODE *h,int a,int d)
 60 {
 61     SNODE *p,*q;
 62     SNODE *s;
 63     s=(SNODE *)malloc(sizeof(SNODE));
 64     s->data=d;
 65     q=h;p=h->next;
 66     while(p)
 67      {
 68        if(p->data==a) break;
 69        q=p;p=p->next;
 70      }
 71     s->next=q->next;
 72     q->next=s;
 73     showstars(h);
 74 }
 75
 76 /*删除值为targetdta的链接节点*/
 77 void collectnode(int targetdata,SNODE *h)
 78 {
 79     SNODE *p,*q;
 80     p=h->next;
 81     q=h;
 82     while (p)
 83      {
 84         if(p->data==targetdata)
 85           {
 86            break;
 87           }
 88         q=p;p=p->next;
 89      }
 90     if(p)
 91      {
 92          q->next=p->next;
 93          free(p);
 94      }
 95 }
 96
 97 void main()
 98 {
 99     int saiwa[N]={1,2,3,4,5};
100     SNODE *head;
101     head=createhead(saiwa);
102     showstars(head);
103     printf("================*在数组的值4前插入节点值8=================\n");
104     insert(head,4,8);
105
106     printf("================*回收节点4=================\n");
107     collectnode(4,head);
108     showstars(head);
109 }

输出结果:

转载于:https://www.cnblogs.com/saintdingspage/p/11231302.html

粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构相关推荐

  1. C语言入门 —— 非科班大一学生的C语言自学笔记

    初入前端的北京某211大一非科班生(没错上学期还是日语生)的C语言自学笔记 本文约8k字,将介绍:编程基础 数据类型 表达式 语句与控制流 函数 数组,指针 结构体等会随着学习进度推进持续更新~ 学习 ...

  2. 破解root密码,简单粗暴—干就完了!!!

    第一步: 启动Linux系统,在读秒阶段按'e' 进来之后就是这个页面 第二步: 用方向'下键'将光标移动到Linux这段最后 命令:空格后输入rd.break console=tty0 之后ctrl ...

  3. 20221103 C语言自学笔记第一天

    一直以来的一个想法,终于有时间去做了,借助CSDN平台,记录C语言自学的点点滴滴,今天干了下边这些事: 1.在B站上找到郝斌老师那套经典的自学视频,将源码和PPT下载,留作备用. 2.在虚拟机中安装X ...

  4. 《C程序设计语言》笔记 第6章 结构

    结构(structure)是一个或多个变量的集合,这些变量可能是不同的类型,为了方便处理而组织在一个名字之下.由于结构将一组相关的变量看作一个单元而不是各自独立的实体,因此结构有助于组织复杂的数据,特 ...

  5. 9.22 C语言自学笔记

    每一个数组都要遍历 字符串的表示方法 char arr1[]={'a','98','c'};//如果没有\0表示字符串的结束,则会printf任意值 所以要手动在最后加入'\0'char arr2[] ...

  6. C语言自学笔记,第一天

    //第一天课简单了解了下C语言的发展和标准,按照进度开始先简单了解学习阶段,然后再细分每个板块 #define _CRT_SECURE_NO_WARNINGS 1 //记得加分号!!! //出现函数提 ...

  7. R语言自学笔记:数据处理、数据分布及数据检验

    一. 基本的数据统计处理 1. 数据的展示 对于一组数据,可以有许多统计分析的方法. (1) 基本信息 mean():求平均值 sum():求和 sd():求总体标准差--(样本-期望)/(样本数) ...

  8. 黑马程序员--C语言自学笔记---07预处理、进制、机器码

    ------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 1.   #include指令 1)<>:表示包含的是系统的文件 2)#includ ...

  9. Go语言自学笔记(八)

    HTTP编程: Web工作方式:通过HTTP协议 对于普通的上网过程,系统采用的操作流程:浏览器本身是一个客户端,当你输入URL的时候,首先浏览器回去请求DNS服务器,通过DNS获取相应的域名及对应的 ...

最新文章

  1. mysql 8.0配置主从同步_MySQL8.0.19开启GTID主从同步CentOS8
  2. c语言关键字-static
  3. Solaris 9安装VNC
  4. mysql单表备份语句 +多表
  5. 战斗系统的伪原创工具
  6. 手把手带你阅读Mybatis源码(三)缓存篇
  7. Java float型数据判断是否相等
  8. JProfiler 9.1.1部署及使用
  9. 《浪潮之巅》读书笔记——第6章 Microsoft
  10. 【RLchina第四讲】Model-Based Reinforcement Learning
  11. 复制构造函数被调用的3种情况
  12. Linux上安装JDK
  13. 前后端分离的跨域请求问题解决
  14. ASP.NET Core 面试题整理
  15. 谈谈UG二次开发程序入口
  16. mysql datasource.url_DataSource配置
  17. javascript 删除节点
  18. PayPal 如何付款
  19. 为什么GEMM是深度学习的核心
  20. 一个简单的Java例程

热门文章

  1. 家里wifi网速越来越慢_家里的wifi信号不好?有了它再也不怕网速慢啦
  2. Linux 系统应用编程——进程间通信(上)
  3. 我的AutoHotkey配置
  4. linux内核模块常见问题
  5. vue里写三元判断绑定class和style
  6. Altium Designer如何画虚线
  7. React开发(213):React在 DevTools 中显示自定义名称
  8. 前端学习(3068):vue+element今日头条管理-上午总结
  9. 前端学习(2524):自定义指令(钩子函数)
  10. 前端学习(2442):解决跨域问题