粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构
#include <stdio.h>
#include <stdlib.h>
#define N 5
/*N 假定数组长度为5*/
typedef struct snode
{
int data;
struct snode *next;
} SNODE; /*第一步,添加链表头信息*/
SNODE *createhead(int a[])
{
SNODE *h,*p,*q;
/*q为上一节点,p为当前节点*/
int i;
q=(SNODE *)malloc(sizeof(SNODE));
h=q;
for(i=;i<N;i++)
{
p=(SNODE *)malloc(sizeof(SNODE));
p->data = a[i];
q->next=p;
q=p;
}
q->next=;
return h;
} /*第二步打印链表中的元素*/
void showstars(SNODE *h)
{
SNODE *p;
p=h->next;
while(p)
{
printf("%d 其地址为 %x\n",p->data,p);
p=p->next;
}
} /*第三步删除/回收节点*/
void revokeresource(SNODE *h)
{
SNODE *p,*q;
p=h->next;
while(p)
{
q=p->next;
printf("哦,no~~~%d被回收了\n",p->data);
free(p);
p=q;
}
free(h);
} /*添加一个节点,目标在值为4的结点前添加一个结点,如果值为4的节点不存在,则在末尾添加一个结点*/
void insert(SNODE *h,int a,int d)
{
SNODE *p,*q;
SNODE *s;
s=(SNODE *)malloc(sizeof(SNODE));
s->data=d;
q=h;p=h->next;
while(p)
{
if(p->data==a) break;
q=p;p=p->next;
}
s->next=q->next;
q->next=s;
showstars(h);
} /*删除值为targetdta的链接节点*/
void collectnode(int targetdata,SNODE *h)
{
SNODE *p,*q;
p=h->next;
q=h;
while (p)
{
if(p->data==targetdata)
{
break;
}
q=p;p=p->next;
}
if(p)
{
q->next=p->next;
free(p);
}
} void main()
{
int saiwa[N]={,,,,};
SNODE *head;
head=createhead(saiwa);
showstars(head);
printf("================*在数组的值4前插入节点值8=================\n");
insert(head,,); printf("================*回收节点4=================\n");
collectnode(,head);
showstars(head);
}
输出结果:

粗暴,干就完了----徐晓冬似的C语言自学笔记-----实现一个链表结构的更多相关文章
- 粗暴,干就完了----徐晓冬似的C语言自学笔记----前言
10对年前就觉得C/C++语言很酷,第一印象就是90年代末,个人电脑在中华大地开始普及的岁月中,层出不穷的病毒,对了,全是C/C++写的:除了危及人民群众信息安全以外,C系列语言用途甚广,可以发明其他 ...
- 粗暴,干就完了----徐晓冬似的C语言自学笔记---字符数组相关技术
字符串拼接函数 strcat() 字符串----作为很多编程语言的鼻祖C语言,没有字符串类型,取而代之的字符数组,很多数组在声明的时候会给定数组长度,然而我们却可以这样写 char mywords[] ...
- 51单片机C语言学习笔记3: 存储器结构
MCS-51单片机在物理结构上有四个存储空间: 1.片内程序存储器2.片外程序存储器3.片内数据存储器4.片外数据存储器 但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1.片内外统一编 ...
- Go语言学习笔记(四)结构体struct & 接口Interface & 反射
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
- Go语言学习笔记(四)结构体struct & 接口Interface & 反射reflect
加 Golang学习 QQ群共同学习进步成家立业工作 ^-^ 群号:96933959 结构体struct struct 用来自定义复杂数据结构,可以包含多个字段(属性),可以嵌套: go中的struc ...
- c语言学习笔记 for循环的结构
其实感觉for循环没有while循环那么直白好理解. for(i=0;i<n;i++) { dosth(); } i=0是i的初始值. i<n是循环进行的条件. i++是每次循环要做的事情 ...
- c语言学习笔记(10)——结构体
------------------------------------------------------------------ # include <stdio.h> struct ...
- Go语言学习笔记(8)——包和结构体
包 —— 每个可执行的应用程序必须包含一个主函数,它是执行的入口点.主函数应该存在main包中. 结构体: 通过 . 操作符访问结构体的各个成员! 1. 定义结构体类型person: type per ...
- 2017-04-21周C语言学习笔记
C语言学习笔记:... --------------------------------- C语言学习笔记:学习程度的高低取决于.自学能力的高低.有的时候生活就是这样的.聪明的人有时候需要.用笨的方法 ...
随机推荐
- 要求设计 LazyMan 类,实现以下功能
LazyMan('Tony'); // Hi I am Tony LazyMan('Tony').sleep(10).eat('lunch'); // Hi I am Tony // 等待了10秒.. ...
- DB2创建EMP和DEPT并进行基础操作
一.DB2创建EMP和DEPT测试表 --DB2创建测试表 CREATE TABLE TEST.EMP (EMPNO INTEGER NOT NULL, ENAME ), JOB ), MGR INT ...
- javaweb配置连接mysql数据库
1.首先新建基础连接类BaseDao,在这里配置链接的数据库名称,用户名以及密码,以及执行读与写操作的父方法,代码如下: package com.demo.dao; import java.sql.D ...
- python基础知识0-1
绝对值:abs age = -19 age.__abs__() 19 相加: add age.__add__() 与运算:and age.__add__() 比较两个数大小:cmp age._cmp_ ...
- VNote: 一个舒适的Markdown笔记软件
Update: 支持macOSYunpan Update 2: 写在VNote半周岁 QQ群(487756074) Markdown标记语言一直是许多程序员的最爱.目前,有许多优秀的Markdown编 ...
- 利用ant-design封装react的地址输入组件
在上一节利用element-ui封装地址输入的组件留下了个尾巴,说react搭配ant-design封装一下地址输入的组件的.本来应该早早就完成的,但是由于这中间发生了一些事情,导致了突发性的换了工作 ...
- 7-MySQL DBA笔记-研发规范
第7章 研发规范 本章将为读者解读一份研发规范.为了更好地协同工作和确保所开发的应用尽可能的稳定.高效,建立一套数据库相关的研发规范是很有必要的,虽然研发规范的确立和推广是一项很耗时的工作,但所取得的 ...
- AngularJS-01.AngularJS,Module,Controller,scope
1.AngularJS 一个构建动态Web应用程序的结构化框架. 基于JavaScript的MVC框架.( MVC ---- Model(模型).View(视图).Controller(控制器) ) ...
- 关于SpringMVC的几件小事
一.SpringMVC表单标签He处理静态资源 1.Spring的表单标签 通过SpringMVC的表单标签可以实现将模型数据中的属性和HTML表单元素相绑定,以实现表单数据更便捷编辑和表单值的回显. ...
- 【php设计模式】桥接模式
定义: 将抽象与实现分离,使它们可以独立变化.它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度. 角色: 抽象化(Abstraction)角色:定义抽象类,并包含一个对实现 ...