代码(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语言 链表 头插法相关推荐

  1. c语言链表排序新增头指针法,C语言链表头插法,尾插法,排序

    题目描述 火车站要组装一列动车.每列车厢有车厢编号.座位数和座位等级.现在请你把它们组装起来,要求按照车厢号码升序排列,并输出每列车厢的信息.请使用链表来实现. 输入 输入有多组. 每组有多行.第一行 ...

  2. C语言使用头插法建立单链表并输出

    使用头插法建立单链表并输出## 标题 # include<stdio.h>typedef struct node{int data;struct node *next; } Lnode;L ...

  3. C语言实现单链表头插法

    //链表结构 //a是数据域 //node是指针域 //typedef是结构体简化语句 //node用于后面初始化空间的时候取结构体的占用空间大小 //listnode是整个链表的头指针指向,即指向链 ...

  4. C语言实现头插法建立单链表

    首先要明确一点,利用头插法建立出来的单链表的输出都是逆序的(就是和你的输入顺序反着来的)然后就是要明确生成的新结点是一个个加在某个结点的前面的(这个结点不一定是头结点,下面的代码是插在p的前头),这就 ...

  5. 单链表头插法与尾插法的c语言实现(回顾)

    #include<stdio.h> #include<math.h> #include<stdlib.h> typedef struct node{int data ...

  6. C语言用头插法建立单链表

    emm,都在注释里-- #include<iostream> #include<stdio.h> #include<stdlib.h> using namespac ...

  7. 不带头结点建立单链表(头插法、尾插法)

    #include<iostream> using namespace std; #include<stdlib.h> typedef int ElemType; typedef ...

  8. 单向链表 头插法尾插法

    链表 链表(Linked list)是一种常见的基础数据结构,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个结点里存到下一个结点的地址.链表在存储数据结构的内存中有两块区域.一块区域用来存 ...

  9. jdk1.7HashMap链表头插法导致的死循环

    jdk1.7的HashMap的源码分析参考我之前整理的HashMap,之前也有整理头插法导致的死循环,这里再整理一下.参考连接 扩容的核心源码如下: void transfer(Entry[] new ...

最新文章

  1. 安全多方计算(MPC)从入门到精通:JUGO-IDE及SDK
  2. 利用yum升级Centos6的gcc版本,使其支持C++11
  3. ubuntu中flashcache使用教程
  4. 动手学深度学习(PyTorch实现)(十)--NiN模型
  5. 风起云涌:传Oracle技术的二号人物 Thomas Kurian 正在离开
  6. html检测用户在线离线,HTML5 --- navigator.onLine 离线检测(示例代码)
  7. Educational Codeforces Round 12 B. Shopping 暴力
  8. ERP+WMS信息一体化案例:汽车钢板弹簧企业【神风弹簧】
  9. echarts 生成 迁徙图_echarts迁徙图
  10. Load Runner:了解软件安装后目录http://www.boobooke.com/bbs/thread-1959-1-1.html
  11. 青年教师计算机培训美篇,小学生停课不停学美篇 小学生停课不停学美篇开头语...
  12. 进程间的通信方式有哪些?
  13. Google 阅读器键盘快捷键
  14. PDF编辑时怎样给PDF文件添加页码
  15. Accelerated Proximal Gradient Method/FISTA
  16. vue3后台管理系统(https://github.com/noob-Jp/my-admin-vue3)
  17. MQTT 通俗易懂讲解
  18. 马云常说要把阿里做到102岁,那么中国从古到今有多少家过百年的企业?
  19. 图论 —— 图的遍历 —— 哈密顿问题
  20. 天翼云应知应会认证重点知识手册

热门文章

  1. A*寻路算法与它的速度
  2. 关于UAC执行级别的研究
  3. 编程计算并输出1~50之间的所有数的阶乘(大数阶乘)
  4. linux常见问题及其解决方案集锦
  5. 5分钟理解一致性哈希算法
  6. 面试官:限制系统扩展能力的瓶颈有哪些?
  7. 一行代码搞定 GitHub 访问徽章
  8. sync.Once 的前世今生
  9. Go mod 七宗罪
  10. 三星电子推出X-net架构用于语音通话