C语言 链表 头插法
代码(VS2017中运行)
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
typedef struct student
{int num;float score;struct student *pnext;//*pnext存的是下一个节点的首地址
}stu,*pstu;
//头插法
void list_head_insert(pstu *pphead, pstu *pptail, int i)//*pphead是二级指针,存储头指针的地址;*pptail是二级指针,存储尾指针的地址
{pstu pnew;//pnew是新的链表的一级指针pnew = (pstu)malloc(sizeof(stu));//pstu也就是struct student*类型;pnew是首地址;malloc是void类型,所以需要强制类型转化memset(pnew, 0, sizeof(stu));pnew->num=i;//pnew->num是一个整体;访问结构体的num成员,另其值为iif (NULL == *pphead)//如果链表为空(第一次循环时链表为空),让头指针指向新节点,尾指针也指向新节点{*pphead = pnew;*pptail = pnew;}else//如果链表非空{pnew->pnext = *pphead;//让新节点的pnext成员指向原有链表头*pphead,*pphead存储的是原有链表头的首地址*pphead = pnew;//让原有链表头节点*pphead指向新节点pnew}
}
//打印
void list_head_print(pstu phead)
{while (phead != NULL){printf("%d ", phead->num);phead = phead->pnext;}
}
int main()
{int i;pstu phead = NULL;//头指针pstu ptail = NULL;//尾指针//在vs2017中,这里的scanf结束时要输入三遍ctrl z+三遍回车while (scanf("%d", &i) != EOF){list_head_insert(&phead, &ptail, i);//&phead是头指针的地址,&ptail是尾指针的地址}list_head_print(phead); system("pause");
}
运行效果
第一行是输入,最后一行是输出
vs2017的^z^z^z
很迷
C语言 链表 头插法相关推荐
- c语言链表排序新增头指针法,C语言链表头插法,尾插法,排序
题目描述 火车站要组装一列动车.每列车厢有车厢编号.座位数和座位等级.现在请你把它们组装起来,要求按照车厢号码升序排列,并输出每列车厢的信息.请使用链表来实现. 输入 输入有多组. 每组有多行.第一行 ...
- C语言使用头插法建立单链表并输出
使用头插法建立单链表并输出## 标题 # include<stdio.h>typedef struct node{int data;struct node *next; } Lnode;L ...
- C语言实现单链表头插法
//链表结构 //a是数据域 //node是指针域 //typedef是结构体简化语句 //node用于后面初始化空间的时候取结构体的占用空间大小 //listnode是整个链表的头指针指向,即指向链 ...
- C语言实现头插法建立单链表
首先要明确一点,利用头插法建立出来的单链表的输出都是逆序的(就是和你的输入顺序反着来的)然后就是要明确生成的新结点是一个个加在某个结点的前面的(这个结点不一定是头结点,下面的代码是插在p的前头),这就 ...
- 单链表头插法与尾插法的c语言实现(回顾)
#include<stdio.h> #include<math.h> #include<stdlib.h> typedef struct node{int data ...
- C语言用头插法建立单链表
emm,都在注释里-- #include<iostream> #include<stdio.h> #include<stdlib.h> using namespac ...
- 不带头结点建立单链表(头插法、尾插法)
#include<iostream> using namespace std; #include<stdlib.h> typedef int ElemType; typedef ...
- 单向链表 头插法尾插法
链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个结点里存到下一个结点的地址.链表在存储数据结构的内存中有两块区域.一块区域用来存 ...
- jdk1.7HashMap链表头插法导致的死循环
jdk1.7的HashMap的源码分析参考我之前整理的HashMap,之前也有整理头插法导致的死循环,这里再整理一下.参考连接 扩容的核心源码如下: void transfer(Entry[] new ...
最新文章
- 安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK
- 利用yum升级Centos6的gcc版本,使其支持C++11
- ubuntu中flashcache使用教程
- 动手学深度学习(PyTorch实现)(十)--NiN模型
- 风起云涌:传Oracle技术的二号人物 Thomas Kurian 正在离开
- html检测用户在线离线,HTML5 --- navigator.onLine 离线检测(示例代码)
- Educational Codeforces Round 12 B. Shopping 暴力
- ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
- echarts 生成 迁徙图_echarts迁徙图
- Load Runner:了解软件安装后目录http://www.boobooke.com/bbs/thread-1959-1-1.html
- 青年教师计算机培训美篇,小学生停课不停学美篇 小学生停课不停学美篇开头语...
- 进程间的通信方式有哪些?
- Google 阅读器键盘快捷键
- PDF编辑时怎样给PDF文件添加页码
- Accelerated Proximal Gradient Method/FISTA
- vue3后台管理系统(https://github.com/noob-Jp/my-admin-vue3)
- MQTT 通俗易懂讲解
- 马云常说要把阿里做到102岁,那么中国从古到今有多少家过百年的企业?
- 图论 —— 图的遍历 —— 哈密顿问题
- 天翼云应知应会认证重点知识手册