粗暴,干就完了----徐晓冬似的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;淘宝分享的内容如何只取…

[html] 说说你对H5的ServiceWorker的理解,它有什么运用场景?

[html] 说说你对H5的ServiceWorker的理解&#xff0c;它有什么运用场景&#xff1f; 一个服务器与浏览器之间的中间人角色&#xff0c;如果网站中注册了service worker 那么它可以拦截当前网站所有的请求&#xff0c;进行判断&#xff08;需要编写相应的判断程序&#xff09;&…

[html] 你知道短链接的生成原理吗?

[html] 你知道短链接的生成原理吗&#xff1f; 目的将长度较长的链接压缩成较短的链接&#xff0c;并通过跳转的方式&#xff0c;将用户请求由短链接重定向到长链接上去1.二种方式生成短链hash-可能会重复发号器发号压缩 URL2.短链跳转方式301 - 用户第一次访问某个短链接后&a…

比较难的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…

再度吐槽,PHP在centos7的安装方式稍不注意可能就打击你的积极性

由于装新机器&#xff0c;没仔细看随便找了篇博文就匆匆安装了php73结果&#xff0c;连配置文件&#xff0c;扩展模块都找不着在哪这里介绍一个linux的查找命令 find / -name php73* 这一命令使用了*这一正则匹配的方法查找php73系列安装文件所处的路径 然而&#xff0c;不幸开…

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…

谷歌服务器——为什么选择Jetty?

google服务器为什么选选择Jetty&#xff1f;因为&#xff1a;Jetty是Java领域另一个出色的Web服务器&#xff0c;它同样也是开源的。与tomcat不同的是它可作为一个嵌入式服务器。也就是说&#xff0c;如果我们在应用中加入jetty的核心jar文件&#xff0c;应用即可对外提供http服…

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;华为正式发…

Visual Studio 2003/Visual Studio 2005常用快捷键(快捷方式)

调试快捷键 F6: 生成解决方案 CtrlF6: 生成当前项目 F7: 查看代码 ShiftF7: 查看窗体设计器 F5: 启动调试 CtrlF5: 开始执行(不调试) ShiftF5: 停止调试 CtrlShiftF5: 重启调试 F9: 切换断点 CtrlF9: 启用/停止断点 CtrlShiftF9: 删除全部断点 F10: 逐过程 CtrlF10: 运行到光标…

oracle 添加字段

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

[html] 如果一个标签元素同时出现两个class属性,两个class都会生效吗?为什么?

[html] 如果一个标签元素同时出现两个class属性&#xff0c;两个class都会生效吗&#xff1f;为什么&#xff1f; class类应该是生效的&#xff0c;具体怎么个执行书序取决于样式表中加载顺序&#xff0c;相同属性后来居上个人简介 我是歌谣&#xff0c;欢迎和大家一起交流前…