C语言程序设计(数据结构)——头插法
今天给大家分享的是使用头插法创建单链表的方法和原理。
头插法顾名思义就是把每个新创建的数据单元放在头结点和首结点之间,这时,新的数据单元就成了新的首结点。原来的首结点就变成了第二个结点。
废话不多说了,直接上代码:
头文件:
#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语言程序设计(数据结构)——头插法相关推荐
- C语言程序设计递推递归n,软考程序员考点C语言程序设计之递归法
下面希赛小编为大家整理的软考程序员考点C语言程序设计之递归法,希望能帮助学友们.具体内容如下: 递归法 递归法是设计和描述算法的一种有力的工具,由于它在复杂算法的描述中被经常采用,为此在进一步介绍其他 ...
- 跳棋的C语言,跳棋游戏C语言程序设计(数据结构课程设计).doc
跳棋游戏C语言程序设计(数据结构课程设计).doc 跳棋程序设计李雄志学号2012214157数学与应用数学12-1班1. 问题描述:2. 程序分析:3. 程序算法:4. 思考感悟.一,问题描述题目要 ...
- [数据结构]头插法与尾插法
#include "stdio.h" #include "stdlib.h" typedef struct List {int data; //数据域struc ...
- c语言 链表建立头插法尾插法,单链表的创建(头插法和尾插法)
单链表的创建分为头插法和尾插法,头插法是不断地向头结点插入新的结点.这样会使你所插入的结点值呈现逆序,所以头插法也可以实现单链表的逆置.尾插法是不断地向插入的新元素之后再插入新的元素.需要注意的是头插 ...
- C语言程序设计(数据结构)——计算一元二次方程
编写一个C语言程序,计算一元二次方程ax^2+bx+c=0的实数根.要求从键盘输入a,b和c,然后再输出解方程的结果. 代码如下: #include<stdio.h> #include&l ...
- Java语言程序设计数据结构基础篇第11版6.31(金融应用:信用卡号的合法性检验)信用卡号遵循某种模式。一个信用卡号必须是13-16位的整数 (java)
信用卡号遵循某种模式.一个信用卡号必须是13到16位的整数.它的开头必须是: 4,指Visa卡 5,指Master卡 37,指American Express卡 6,指Discover卡 1954年, ...
- 专升本c语言程序设计网课_2020年宜春学院专升本招生信息
各位考生: 现将我校2020年普通专升本考试招生专业.专业科目及考试大纲进行公布,招生计划在省教育厅确定后另行通知. 欢迎广大考生报考宜春学院! 序号 招生专业 考试科目 公共课 专业课1 专业课2 ...
- 数据结构上机-尾、头插法建立单链表-单链表遍历C语言完整代码实现
点击此处跳转视频链接:数据结构上机-尾.头插法建立单链表-单链表遍历C语言完整代码实现
- 头插法建立单链表c语言6,2020-07-14(C语言)数据结构采用头插法建立单链表
//采用头插法建立单链表 include include typedef struct LNode { int data; struct LNode *next; } LNode, *LinkList ...
最新文章
- 用算法改造过的植物肉,有兴趣试试么?
- 区块链还可以这么玩?“点亮莫高窟”背后的腾讯云区块链
- org.springframework.beans.factory.BeanCreationException:
- angular js一factory,service,provider创建服务
- 秒杀多线程第十四篇 读者写者问题继 读写锁SRWLock
- 一步一步学Silverlight 2系列(6):键盘事件处理
- csv 20位数据 如何打开可以预览完整数字_干货Python Pandas 做数据分析之玩转 Excel 报表分析...
- apscheduler -定时任务
- python---可执行文件的转换
- Java Stream MapReduce大数据开发模型
- 重启nginx后丢失nginx.pid的解决方法
- iOS学习笔记——多控制器管理
- StretchBlt()函数
- 转行软件测试,简历怎么包装成1年工作经验的测试工程师
- python批量修改文件夹名称,简洁快捷
- 我的第一本社会心理学(part1)--社会心理学是研究个体和群体的社会心理、社会行为及其发展规律的科学
- 怼天怼地的马斯克道歉了?
- 毕业设计网站项目的开发流程
- 安卓搭建http文件服务器,如何在安卓上搭建http服务器
- springboot 分组校验和顺序校验