今天给大家分享的是使用头插法创建单链表的方法和原理。

头插法顾名思义就是把每个新创建的数据单元放在头结点和首结点之间,这时,新的数据单元就成了新的首结点。原来的首结点就变成了第二个结点。
废话不多说了,直接上代码:

头文件:

#include<stdio.h>
#include<stdlib.h>

数据类型重定义:

typedef int ElemType;
typedef struct LNode{ElemType data;struct LNode *next;    //指向后继结点
} LinkNode;

注意:数据类型重定义的意思是将一个自己命名的类型用已经有的类型来代替,同时typedef有很多用法,其中最多的用法就是为数据类型,同时也方便程序员写代码。
在c语言中,它可以用系统提供的标准类型名使用或者可以自己重新定义新的类型名。
例如:
定义1:

typedef unsigned int uint;
uint a;

定义2:

unsigned int a;

以上两种定义是同等的,相当于给unsigned int 起了个别名叫uint,当然也可以叫别的名字。
头插法:

void CreateListF(LinkNode *&L, ElemType a[], int n)
{LinkNode * s;L = (LinkNode *)malloc(sizeof(LinkNode));    //创建头节点L->next = NULL;for(int i = 0; i < n; i++){s = (LinkNode *)malloc(sizeof(LinkNode));//创建新节点ss->data = a[i];s->next = L->next;    //将节点s插在开始接点之前,头节点之后L->next = s;}
}

如图所示:

输出单链表:

void DispList(LinkNode *L){LinkNode *p = L->next;    //p指向首节点while(p != NULL){    //p不为NULL,输出p节点的dataprintf("%d ", p->data);p = p->next;    //p移向下一个节点}printf("\n");
}

主函数:

int main()
{   LinkNode *h;ElemType a[10]={0,1,2,3,4,5,6,7,8,9};CreateListF(h,a,10);DispList(h);return 0;
}

结果如图所示:
根据结果可以得出的结论:使用头插法插入的数据元素和数组原本的元素的顺序是相反的,这是因为数组越后面的元素在插入链表时总是在首结点处插入的。
注意 : 这个程序在建立文件时应该建立后缀名为.cpp的文件,建立.c文件在编译时可能会出错!!!

C语言程序设计(数据结构)——头插法相关推荐

  1. C语言程序设计递推递归n,软考程序员考点C语言程序设计之递归法

    下面希赛小编为大家整理的软考程序员考点C语言程序设计之递归法,希望能帮助学友们.具体内容如下: 递归法 递归法是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他 ...

  2. 跳棋的C语言,跳棋游戏C语言程序设计(数据结构课程设计).doc

    跳棋游戏C语言程序设计(数据结构课程设计).doc 跳棋程序设计李雄志学号2012214157数学与应用数学12-1班1. 问题描述:2. 程序分析:3. 程序算法:4. 思考感悟.一,问题描述题目要 ...

  3. [数据结构]头插法与尾插法

    #include "stdio.h" #include "stdlib.h" typedef struct List {int data; //数据域struc ...

  4. c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)

    单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...

  5. C语言程序设计(数据结构)——计算一元二次方程

    编写一个C语言程序,计算一元二次方程ax^2+bx+c=0的实数根.要求从键盘输入a,b和c,然后再输出解方程的结果. 代码如下: #include<stdio.h> #include&l ...

  6. Java语言程序设计数据结构基础篇第11版6.31(金融应用:信用卡号的合法性检验)信用卡号遵循某种模式。一个信用卡号必须是13-16位的整数 (java)

    信用卡号遵循某种模式.一个信用卡号必须是13到16位的整数.它的开头必须是: 4,指Visa卡 5,指Master卡 37,指American Express卡 6,指Discover卡 1954年, ...

  7. 专升本c语言程序设计网课_2020年宜春学院专升本招生信息

    各位考生: 现将我校2020年普通专升本考试招生专业.专业科目及考试大纲进行公布,招生计划在省教育厅确定后另行通知. 欢迎广大考生报考宜春学院! 序号 招生专业 考试科目 公共课 专业课1 专业课2 ...

  8. 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现

    点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现

  9. 头插法建立单链表c语言6,2020-07-14(C语言)数据结构采用头插法建立单链表

    //采用头插法建立单链表 include include typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList ...

最新文章

  1. SpringMVC的form:form表单的使用
  2. JAVA抽象类和接口的区别【附经典分析用例Door】
  3. Html内容超出标记宽度后自动隐藏
  4. win2003服务器装spl2008,打安全补丁后无法进入SQL Server Management Studio
  5. Windows 技术篇-win10总是提示“目前无法访问 SmartScreen”问题解决方法,关闭“目前无法访问 SmartScreen”电脑提示方法演示
  6. 北邮高级语言设计基于java期末_北邮《高级语言程序设计》第三次阶段作业带答案...
  7. 冗余网络构建方案对比:VRRP协议、多网卡绑定及WN202冗余链路网卡
  8. Firebug调试工具
  9. uniapp使用阿里百川SDK唤醒淘宝APP 打开淘宝领券页面/渠道备案,uniapp对接淘宝联盟等等超级详细
  10. Linux系统carplay模块,CarPlay for Android: R12d 插件源码移植到Linux
  11. Excel快捷键及常用技巧
  12. Y7000P电池0%解决办法
  13. A5SHB,A5SHB芯片三极管规格书
  14. 市场营销中的色彩心理学
  15. java 汇编_大话+图说:Java 汇编指令——只为让你懂
  16. clang: warning: argument unused during compilation: ‘-no-pie‘ [-Wunused-command-line-argument]
  17. EXCEL根据一列筛选另一列
  18. docker 国内镜像加速
  19. jenkins-凭证管理
  20. 全国计算机一级取代,全国计算机等级考试如何替代自考科目?

热门文章

  1. excel宏(VB)常用保留字及关键字整理
  2. 【STM32】基于F103C8T6和ESP01远程控制灯光开关(SG90舵机控制)
  3. ABAP SQL聚合函数简介
  4. 论文阅读《Bidirectional LSTM-CRF Models for Sequence Tagging》
  5. i7-6700HQ+GTX965M UEFI安装win10+ubuntu16.04
  6. 十大恶意软件让安卓手机成为噩梦,移动代码签名证书重要性大增
  7. comsol分析时总位移代表什么_comsol求解波动方程.ppt
  8. 浅谈JavaScript中的String类型
  9. 使用embeded tomcat进行嵌入式tomcat-启动tomcat
  10. python元组的修改