不带头结点的头插法和尾插法

2024-04-12 22:08
文章标签 结点 插法 带头

本文主要是介绍不带头结点的头插法和尾插法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!




可见:不带头指针的插入操作比较繁琐,尤其是尾插法,每次需要遍历链表找到尾节点,然后执行插入操作


typedef int DATA;
struct SNode
{DATA data;SNode *pNext;
};SNode *g_pHead = NULL;/* 不带头结点的尾插法和头插法 */
void AddHead(DATA d)
{SNode *p = (SNode *)malloc(sizeof(SNode));p->data = d;p->pNext = g_pHead; //新节点的后继g_pHead = p; //首结点
}void  AddTail(DATA d)
{SNode *ptr = g_pHead;SNode *p = (SNode *)malloc(sizeof(SNode));p->data = d;p->pNext = NULL;if (!ptr) //第一次为空节点时{g_pHead = p;return;}while (ptr->pNext) //循环查找尾节点,然后插入{ptr = ptr->pNext;}ptr->pNext = p;}


这篇关于不带头结点的头插法和尾插法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/898374

相关文章

带头结点的线性链表的基本操作

持续了好久,终于有了这篇博客,链表的操作需要借助图像模型进行反复学习,这里尽可能的整理并记录下自己的思考,以备后面复习,和大家分享。需要说明的是,我们从实际应用角度出发重新定义了线性表。 一. 定义 从上一篇文章可以看到,由于链表在空间的合理利用上和插入、删除时不需要移动等优点,因此在很多场合下,它是线性表的首选存储结构。然而,它也存在某些实现的缺点,如求线性表的长度时不如顺序存储结构的

【hdu】I Hate It(线段树,结点修改求区间最大值)

线段树的模板题,还是二分递归。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vector>#include <queue>#include <set>#include <map>#incl

【hdu】敌兵布阵(线段树,更加结点,区间求和)

最近开始刷线段树,主要围绕notonlysuccess的线段树总结刷。 结点修改还是比较简单的,不需要什么懒惰标记,直接二分递归就可以了。 #include <iostream>#include <cstdlib>#include <cstdio>#include <string>#include <cstring>#include <cmath>#include <vecto

【数据结构初阶】链表分类与双向带头循环链表接口实现

文章目录 1. 链表的分类2. 双向带头循环链表接口实现2. 1 结点声明2. 2 创建链表节点2. 3 初始化链表2. 4 打印链表2. 5 尾插2. 6 判空2. 7 尾删2. 8 头插2. 9 头删2. 10 查找2. 11 在指定位置删除与插入2. 12 销毁 3. 链表接口测试4. 单链表与双链表5. 顺序表与链表 1. 链表的分类 链表的结构非常多样,以下情况组合

图神经网络(三)----结点分类问题

本篇文章将逐步记录自己针对图神经网络处理结点分类的相关Papers。 一、Paers 1、时间:2020年3月   Benchmarking Graph Neural Networks【Paper】【Code】  【导读】Bengio等人提出一个图神经网络的基准框架。 2、 时间:2020年3月   N-GCN: Multi-scale Graph Convolution for Semi

使用单个位来存放每个结点的颜色:证明与实现

使用单个位来存放每个结点的颜色:证明与实现 背景知识问题阐述BFS算法的伪代码修改后的BFS算法的伪代码证明过程C语言实现结论 在算法和图论中,染色问题是一个重要的话题,尤其是在处理诸如二分图检测、图的遍历等问题时。本文将探讨在使用广度优先搜索(BFS)算法时,为何仅使用单个位来存放每个结点的颜色即可,并通过详细证明及C语言代码实现来阐述这一点。 背景知识 在图论中,图的遍

数据结构-非线性结构-树形结构:有序树 ->二叉树 ->哈夫曼树 / 霍夫曼树(Huffman Tree)【根据所有叶子节点的权值构造出的 -> 带权值路径长度最短的二叉树,权值较大的结点离根较近】

哈夫曼树概念:给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree)。 哈夫曼树是带权路径长度最短的树,权值较大的结点离根较近。 一、相关概念 二叉树:每个节点最多有2个子树的有序树,两个子树分别称为左子树、右子树。有序的意思是:树有左右之分,不能颠倒 叶子节点:一棵树当中没有子结点的结点称为叶子

奇数值结点链表

习题11-7 奇数值结点链表   (20分) 本题要求实现两个函数,分别将读入的数据存储为单链表、将链表中奇数值的结点重新组成一个新的链表。链表结点定义如下: struct ListNode {int data;ListNode *next;}; 函数接口定义: struct ListNode *readlist();struct ListNode *getodd( struct L

数据结构--带头双向循环链表

目录 一、前言: 单链表存在缺陷:不能找到前驱,即不能从后往前找数据。 解决方法:双向链表。 二、带头双向循环链表: 1.实现的接口总数 2.建立链表及上述接口 (1)链表的建立 (2)创立新节点的函数 (3)初始化函数  (4)销毁函数 (5)打印函数 (6)尾插函数 (7).头插函数 (8).头删函数 (9)尾删函数 (10)查找函数 (11)pos位置之

计算二叉树中叶子结点的数目

编写递归算法,计算二叉树中叶子结点的数目。 二叉链表类型定义: typedef struct BiTNode {TElemType data;BiTNode *lchild, *rchild;} BiTNode, *BiTree;实现函数如下: void Leaves(BiTree bt, int &x)/* Count the leaf node of the BiTr