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

  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/410519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C# 淘宝商品微信返利助手开发-(二)返利助手开放文档以及帐号申请地址

系列教程一目录&#xff1a;返利助手原理 系列教程二目录&#xff1a;返利助手开放文档以及帐号申请地址 系列教程三目录&#xff1a;返利助手开发&#xff08;1&#xff09;API介绍 系列教程四目录&#xff1a;返利助手开发&#xff08;2&#xff09;淘宝分享的内容如何只取…

比较难的sql面试题,令我比较郁闷!

一组通话记录&#xff08;总共500万条&#xff09;:ID 主叫号码 被叫号码 通话起始时间 通话结束时间 通话时长1 98290000 0215466546656 2007-02-01 09:49:53.000 2007-02-01 09:50:16.000 232 98290000 021546654666 2007-02-01 09:50:29.000 2007-02-01 09:5…

阿里云ESC服务器数据快速转移至轻量应用服务器

ECS服务器的换ECS的服务器已有的数据转换就很简单了&#xff0c;直接创建自定义镜像&#xff0c;创建完成后新服务器直接更换系统盘然后选择你创建的镜像就直接吧你的数据可软件一起直接移到新的ECS的服务器了 可是坑爹的是&#xff0c;新买的轻量应用服务器里面左找右找也找…

js udp通信_nodejs源码分析第十九章 -- udp模块

udp不是面向连接的协议&#xff0c;所以使用上会比tcp简单&#xff0c;他和tcp一样&#xff0c;使用四元组来标记通信的双方&#xff08;单播的情况下&#xff09;。我们看看udp作为服务器和客户端的时候的流程。1 在c语言中使用udp1.1 服务器流程&#xff08;伪代码&#xff0…

SVN 清理失败解决方案

SVN有时因各种不明原因导致清理失败&#xff0c;可以采取如下解决办法进行处理&#xff1a; 方法一&#xff1a; 删除根目录下隐藏文件夹“.svn” 然后在根目录文件夹 外面的空白处 检出。比如你项目文件夹名为“D:/source” 则svn检出时,在“source”外面的D盘(D:/) 空白处上右…

将SQL-SERVER逆向工程导入Power-Design中并给表的字段添加注释

PD是一款不错的数据库设计工具&#xff0c;我们在项目开发的时候直接采用正向工程&#xff0c;设计好数据库后逆向将数据库导入PD中&#xff0c;并在PD中添加数据库字段的注释&#xff0c;便于新人的理解和学习&#xff0c;PD支持Oracle、SqlServer等数据库&#xff0c;是很强大…

腾讯微博Android客户端开发——自动获取验证码

上一节给大家讲解通过调用android系统自带的浏览器进行授权认证的&#xff0c;使用该种方式能很容易的完成认证&#xff0c;但是该种方式有个弊端&#xff0c;也就是如果使用第三方的浏览器如UC、天天等&#xff0c;输入完QQ账号信息点击“授权”后并不能再次跳转到MainActivit…

put请求方式参数如何传_TP5请求(request)变量

可以通过Request对象完成全局输入变量的检测、获取和安全过滤&#xff0c;支持包括$_GET、$_POST、$_REQUEST、$_SERVER、$_SESSION、$_COOKIE、$_ENV等系统变量&#xff0c;以及文件上传信息。检测变量是否设置可以使用has方法来检测一个变量参数是否设置&#xff0c;如下&…

python numpy的var std cov研究

var&#xff1a;表示方差&#xff0c; 即各项-均值的平方求和后再除以N &#xff0c; std&#xff1a;表示标准差&#xff0c;是var的平方根。 cov&#xff1a;协方差 ,与var类似&#xff0c;但是除以(N-1) import numpy as np# 构建测试数据&#xff0c;均值为10 sc [9.7, 10…

Vue手动封装实现一个五星评价得效果

我是歌谣 放弃很难 但是坚持一定很酷 微信公众号关注小歌谣 一起学习前后端知识 今天要说得是实现一个vue中实现五星评价得效果 简单来说 就是封装组件把 具体需要我们了解组件间得相互传值 数据绑定等知识 先用脚手架起个项目先 脚手架启动 ​ 安装依赖 包括 npm ins…

LetCode-MSSQL查找重复的电子邮箱

sql的题目如下所示&#xff0c;查询出重复的电子邮箱 解法(1):查询出查询出Email相等 Id不相同的数据具体语句如下所示: select a.Email from Person as a,Person as b where a.Emailb.Email and a.Id!b.Id此时我们可以看到我们的语句中输出了2次结果但是预期结果只输出了1次…

鸿蒙内核是闭源吗_鸿蒙出世,中华有为!

作者&#xff1a;飞翔吧&#xff01;橙哥转载授权(文末留言&#xff0c;或添加微信&#xff1a;mzy2117)8月9日&#xff0c;超强台风“利奇马”登陆中国。当沿海各地的人们都在琢磨下班如何回家的时候&#xff0c;在广东东莞举行的华为2019年开发者大会上&#xff0c;华为正式发…

oracle 添加字段

alter table 表名 add 新增字段名(类型长度);#添加字段alter table asset_orders add remark varchar2(255);#查看describe asset_orders;转载于:https://www.cnblogs.com/zhaojingyu/p/11236747.html

儿童学文字编程python_手把手教你python数字知识

上篇文章讲述了python的数据类型。 我们先回顾一下&#xff1a;包括&#xff1a;数字&#xff0c;字符串&#xff0c;列表&#xff0c;元组&#xff0c;字典。接下来我们详细的介绍这几种类型。 今天要说的是关于数字的教程。 说到数字&#xff0c;可能你的头脑里首先会反应出&…

LetCode-MSSQL超过5名学生的课

此图关键在于去重后使用having count查询出大于5的值 select class from courses group by class having count(distinct student) > 5;

在laravel5.8中集成swoole组件----初步测试

铺垫前提是先安装swoole组件&#xff0c;我采用从pecl-----php扩展组件网下载swoole扩展包&#xff0c;然后切入到解压缩的扩展包中运行phpize命令&#xff0c; phpize是一种编译命令&#xff0c;可以在安装文件中生成configure文件&#xff0c;从而方便我们编译安装&#xff0…

python改文件名_通过python顺序修改文件名字的方法

通过python顺序修改文件名字的方法 更新时间&#xff1a;2018年07月11日 11:48:55 作者&#xff1a;longma666666 今天小编就为大家分享一篇通过python顺序修改文件名字的方法&#xff0c;具有很好的参考价值&#xff0c;希望对大家有所帮助。一起跟随小编过来看看吧 问题&…

LetCode-MSSQL从不订购的客户

解法(1)&#xff1a;思路为先查询出订购的客户再使用not in查询出不包含订购客户的其他人也就是从来不订购的客户 查询出订购的客户语句: select a.Id from Customers as a,Orders as b where b.CustomerIda.Id再使用not in 查询 不再里面的客户 select Name as Customers fr…

python loadtxt_Python 数据科学入门2:Matplotlib

第七章 从文件加载数据很多时候&#xff0c;我们想要绘制文件中的数据。 有许多类型的文件&#xff0c;以及许多方法&#xff0c;你可以使用它们从文件中提取数据来图形化。 在这里&#xff0c;我们将展示几种方法。 首先&#xff0c;我们将使用内置的csv模块加载CSV文件&#…