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. 详解网络摄像机中的IR-CUT
  2. 第七章 PX4-Mavlink解析
  3. pid matlab 温度控制,基于MatlabPID温控系统设计与仿真.doc
  4. 三星s7共享网络给linux,三星Galaxy S7WiFi状态下可以共享wifi热点吗【详解】
  5. 序列化与反序列化存储、updatepanel
  6. excel乘法公式怎么输入_python吊打Excel?那是你不会用!
  7. 《重构HTML改善Web应用的设计》读书笔记
  8. springMVC:前端请求后台并传值
  9. 计算机装系统常用单词,电脑bios中英文对照表大全,安装系统再也不怕英文了...
  10. 【学生考勤管理系统】 学生考勤打卡系统 学生打卡学生考试系统 学生OA系统
  11. Qt学习之资源文件(qrc)的添加以及使用
  12. 计算机新建里没有word,为什么电脑右键新建里头没有WORD文档,如何加上
  13. 【系统分析师之路】原创章节 非功能需求设计思维导图
  14. 詹姆斯·格雷克《信息简史》读后感记录
  15. 美国伊利诺伊大学香槟分校计算机专业,伊利诺伊大学香槟分校
  16. 计算机房电源引入方式,(完整版)通信机房电源计算公式.pdf
  17. Python程序设计第三章测验总结
  18. eating的中文意思_eating什么意思
  19. STM32F1与STM32CubeIDE编程实例-倾斜开关(Tilt Switch)驱动
  20. java设计九宫格拼图软件哪个好用_九宫格拼图软件下载_抖音很火的九宫格拼图软件app下载_易玩网...

热门文章

  1. 隐藏linux操作系统版本信息,linux centos 如何查看操作系统版本信息?
  2. 【51单片机快速入门指南】3.3:USART 串口通信
  3. Python对Protobuf进行序列化与反序列化
  4. Crosstool-ng制作交叉编译工具链
  5. PWA(Progressive Web App)入门系列:(三)PWA关键技术Manifest
  6. Linux 文件系统与设备文件系统 (二)—— sysfs 文件系统与Linux设备模型
  7. swoole之代码热更新实现
  8. RTP传输H264时的sps和pps的获取
  9. Linux常用错误码--errno-base.h
  10. Taro+react开发(36)每一个节点要一个view包裹