首页 > 其他分享 >头插法新建链表

头插法新建链表

时间:2024-05-06 16:46:58浏览次数:22  
标签:插法 结点 LNode 新建 next 链表 data LinkList

新建链表指针结构体

typedef int ElemType;
typedef struct LNode{
	ElemType data;
	struct LNode* next;//指向下一个结点
}LNode,*LinkList;//结构体名   

LNode==* LinkList;LNode * ==LinkList

头插法新建链表

先建立一个头结点:

L = (LinkList)malloc(sizeof(LNode));//带头结点的链表 L->next = NULL;
malloc格式:变量名=(该变量名的数据类型)malloc(分配空间)

接着新建一个结点:

LNode* s;//结点指针 int x//结点存储的数据;

输入一个新链表:

scanf("%d", &x);//读取数据 插入链表的第一个数据

while (x != -1)   //  -1标志输入结束
{
	s = (LNode*)malloc(sizeof(LNode));//每次都重新对s初始化,强制类型转换
	s->data = x;//把读取到的值,给新空间中的 data 成员
	s->next = L->next;//让新结点的 next 指向链表的第一个元素 第一个放我们数据的元素
	L->next = s;// s 作为第一个元素
	scanf("%d", &x);//从标准输人读取数据	
}

头插法完整代码

//头插法新建链表
LinkList list_head_insert(LinkList& L)
{
	L = (LinkList)malloc(sizeof(LNode));
	L->next = NULL;//L->data 里边没放东西
	LNode* s; 
	int x;
	
	scanf("%d", &x);//读取数据	
	while (x != -1)//-1标志输入结束
	{
		s = (LNode*)malloc(sizeof(LNode));//申请一个新空间给 s,强制类型转换
		s->data = x;//把读取到的值,给新空间中的 data 成员
		s->next = L->next;//让新结点的 next 指指向链表的第一个元素 第一个放我们数据的元素
		L->next = s;//t s 作为第一个元素
		scanf("%d", &x);//从标准输人读取数据	
	}
	return L;
}

所有代码

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

typedef int ElemType;
typedef struct LNode{
	ElemType data;
	struct LNode* next;//指向下一个结点
}LNode,*LinkList;//结构体名    LNode==*LinkList;LNode*==LinkList
 
//头插法新建链表
LinkList list_head_insert(LinkList& L)
{
	L = (LinkList)malloc(sizeof(LNode));//带头结点的链表   malloc格式:变量名=(该变量名的数据类型)malloc(分配空间)
	L->next = NULL;//L->data 里边没放东西

	LNode* s; 
	int x;
	//1 2 3 4 5 6 7 -1
	scanf("%d", &x);//从标准输人读取数据	
	while (x != -1)
	{
		s = (LNode*)malloc(sizeof(LNode));//申请一个新空间给 s,强制类型转换
		s->data = x;//把读取到的值,给新空间中的 data 成员
		s->next = L->next;//让新结点的 next 指指向链表的第一个元素 第一个放我们数据的元素
		L->next = s;//t s 作为第一个元素
		scanf("%d", &x);//从标准输人读取数据	
	}
	return L;
}
//打印链表中每个结点的值
void print_list(LinkList L)
{
	L = L->next;
	while (L != NULL)//NULL 是为了代表一张空的藏宝图
	{
		printf("%3d", L->data);//印当前结点数据
		L = L->next;//指向下一个结点
	}
		printf("\n");
}

int main()
{
	LinkList L,l;//链表义,是结构体指针类型
	list_head_insert(L);//输人数据可以为3456 79999,插法新建链表
	print_list(L);//链表印

	return 0;
}

标签:插法,结点,LNode,新建,next,链表,data,LinkList
From: https://www.cnblogs.com/gqy9521/p/18175311

相关文章

  • 尾插法新建链表
    核心代码:tail=head;s->next=NULL;tail->next=s;tail=s;插入过程演示:![[Pastedimage20230623143820.png]]头插法尾插法新建链表完整代码#include<iostream>#include<malloc.h>usingnamespacestd;typedefintElemtype;typedefstructLNode{ El......
  • kiCad新建符号库(系统自带封装库)
    软件版本:KiCad8.01打开软件,选择工程,并打开原理图:2点击符号编辑器:3新建符号搜索XL,在Regulator_Switching(稳压器开关)一栏中已有一部分XL系列的稳压芯片:在此基础上新建一个XL7056的降压型DC-DC转换器,右键,选择新建符号:输入新建的符号名:此时,在Regulator_Switching(稳......
  • EPAI手绘建模APP新建模型1
    (6) 新建模型图 175 新建模型工具栏-1图 176 新建模型工具栏-2① 新建模型工具栏包括一些建模过程中常用的工具,一般是基于现有模型创建一个或多个新的模型,同样是分步骤完成建模过程。② 挖空模型,选择实体上的面;设置挖空后连接类型,连接类型包括圆弧、相切、相交;挖空后......
  • EPAI手绘建模APP新建模型2
    ⑪ 中轴线,依次选择两条边,在两条边中轴处生成一条新的边。图 187 中轴线⑫ 投影点,选择一个点;选择一条边或者一个面。将点投影到边或者面上,生成新的点。图 188 投影点-1图 189 投影点-2图 190 投影点-3⑬ 投影曲线,选择一条边;选择一个面。将边投影到面上,打开设......
  • 考研打卡链表,栈,队列
    1:链表点击查看代码#include<bits/stdc++.h>usingnamespacestd;typedefstructnode{ intdata; structnode*next;}listnode,*list1;typedefstructnow{ intdata; structnow*next,*prve;}listnow,*list2;boollistn(list1&L,intx,inty){ if(x&l......
  • vscode 新建、合并分支
    vscode1.88.1(2024-04-10)gitea-1.20-gogit-windows-4.0-amd64Windows11--- 序章本文演示自己用的VisualStudiocode1.88.1中:新建分支合并分支两个操作。 说明,本文仅展示了在自己的开发环境,单人操作。团队多人操作时,应该还有下拉、解决冲突、提交等需要处......
  • 力扣-430. 扁平化多级双向链表
    1.题目题目地址(430.扁平化多级双向链表-力扣(LeetCode))https://leetcode.cn/problems/flatten-a-multilevel-doubly-linked-list/题目描述你会得到一个双链表,其中包含的节点有一个下一个指针、一个前一个指针和一个额外的子指针。这个子指针可能指向一个单独的双向链表,也......
  • 力扣-82. 删除排序链表中的重复元素
    1.题目题目地址(82.删除排序链表中的重复元素II-力扣(LeetCode))https://leetcode.cn/problems/remove-duplicates-from-sorted-list-ii/题目描述给定一个已排序的链表的头 head, 删除原始链表中所有重复数字的节点,只留下不同的数字 。返回已排序的链表 。 示例1:......
  • 力扣-83. 删除排序链表中的重复元素
    1.题目题目地址(83.删除排序链表中的重复元素-力扣(LeetCode))https://leetcode.cn/problems/remove-duplicates-from-sorted-list/题目描述给定一个已排序的链表的头 head , 删除所有重复的元素,使每个元素只出现一次 。返回已排序的链表 。 示例1:输入:head=[1,1......
  • 双向链表及双向循环链表接口设计
    双向链表及双向循环链表接口设计双向链表接口设计由于带头结点更加方便用户进行数据访问,所以本次创建一条带头结点的双向不循环的链表。创建新的头结点和新节点//数据类型typedefintdatatype_t;//创建结点类型typedefstructdoublelinckelist{datatype_tdata;......