(二)单链接表的实现之从尾部插入节点

(二)单链接表的实现之从尾部插入节点

从尾部插入节点构建一个简单的列表什么是头节点

从尾部插入节点

从尾部插入节点
??如上图所示,只要将创建的节点的pNext指针指向下一节点地址即可:pHeader->pNext = New;
??从尾部插入节点分成两个步骤:

  • 找到链表的最后一个节点;
  • 将新的节点和原来的最后一个节点链接起来。
 1/* 2 *pH : 表示链表的头指针 3 *new: 新节点的首地址 4 */ 5void insert_tail(struct node *pH,strtuct node *new) 6{ 7    struct node *p = pH;        //node定义 见上一章节 8    while(NULL != p -> pNext) 9    {10        p = p -> pNext;11    }12    p -> pNext = new;13}

构建一个简单的列表

 1#include <stdio.h> 2#include <string.h> 3#include <stdlib.h> 4struct node 5{ 6    int data; 7    struct node *pNext; 8}; 9struct node *create_node(int data);//实现见上一章10void insert_tail(struct node *pH,strtuct node *new);11int main()12{13    struct node *pHeader = create_node(1);14    insert_tail(pHeader ,create_node(2));15    insert_tail(pHeader ,create_node(3));16    printf("node1 data: %d.\n",pHeader->data);17    printf("node2 data: %d.\n",pHeader->pNext->data);18    printf("node2 data: %d.\n",pHeader->pNext->pNext->data);19}

什么是头节点

??链表把头指针指向的第一个节点作为头节点使用。头节点有两个特点:它紧跟在头指针后面;头节点的数据部分是空的(或者存储链表节点数),指针部分指向第一个有效节点。
??头节点和其他节点不同,头节点在创建头指针时一并创建并和头指针关联起来。后面真正的节点用节点添加函数添加。
??链表的头节点不是必须的。有无头节点在一些算法处理上有些不同。比如插入节点、删除节点、遍历节点。

有无头节点

原文地址:https://www.cnblogs.com/ywx123/p/10210885.html

时间: 2024-08-03 05:19:23

(二)单链接表的实现之从尾部插入节点的相关文章

使用OC实现单链表:创建、删除、插入、查询、遍历、反转、合并、判断相交、求成环入口

一.概念 链表和数组都是一种线性结构,数组有序存储的,链表是无序存储的. 数组中的每一个元素地址是递增或者递减的关系,链表的每一个节点的地址没有此规律,它们是通过指针的指向连接起来. 链表种类:单链表.双向链表.循环链表.双向循环链表 单链表:一个数据域data.一个后继指针域next.也即:上一个节点指向下一个节点,尾节点指向空. 双向链表:一个数据域data.一个前驱指针域previous.一个后继指针域next.也即:上一个节点和下一个节点互相指向,尾节点指向空. 循环链表:一个数据域da

创建一个单链表,实现头部插入和尾部插入

/*目的:创建一个单链表,实现尾部插入,头部插入,遍历链表*/ #include <stdio.h>#include <string.h>#include <stdlib.h> //定义一个结构体,用来表示一个节点,包含指针域,数据域 struct node{ int data; //数据域 struct node *next; //指针域,指向节点的指针,用来连接两个节点}; //定义一个函数,用来创建节点,为节点分配堆内存,由于堆内存残留有随机值,创建成功后清空内存

夺命雷公狗jquery---40在元素头尾部插入元素可alert出来看

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title></title> <script src="js/jquery.js"></script> <script> $(function(){ //版定click事件 $('#btnok').bind('click',function(){ //1

仿小米便签图文混排 EditText解决尾部插入文字bug

一直想实现像小米便签那样的图文混排效果,收集网上的办法无非三种: 1.自定义布局,每张图片是一个ImageView,插入图片后插入EditText,缺点是实现复杂,不能像小米便签那样同时选中图片和文字 2.通过Html.fromHtml(source),可以将图片加载写进ImageGetter,实现后无bug,但是只能显示Html,当EditText setText后,想取出之前的HTML格式      图片得到的是一个obj的字符,查看了很多博客,包括stackoverflow也没给出办法从e

链式二叉搜索树#插入节点#

定义一个二叉树节点的数据结构如下: typedef struct TREE_NODE { TREE_TYPE value; struct TREE_NODE *pLeft; struct TREE_NODE *pRight; }TreeNode; 插入节点的原型为:void insert(TreeNode **pLink,TREE_TYPE data): 如果要将数组元素a[10]={20,12,25,5,16,28,2,17,26,29}; 下面分两种情况讨论: ①    :当二叉搜索树为空时

php 向数组 首位插入 和 尾部插入

首位插入: <?php$queue = array("orange", "banana");array_unshift($queue, "apple", "raspberry");print_r($queue);?> Array ( [0] => apple [1] => raspberry [2] => orange [3] => banana ) 尾部插入:<?php$stack 

【黑马】程序员————多线程(二)单例设计模式、线程间通信,JDK1.5互斥锁

------Java培训.Android培训.iOS培训..Net培训.期待与您交流!----- 一.单例设计模式 单例设计模式的意义: A.保证类在内存中只有一个对象,不提供外部访问方式,构造函数用private修饰. B.提供公共方法(static修饰,类的静态方法),获取类的实例.单例设计模式分为饿汉和懒汉两种模式. 饿汉式&懒汉式 class Test33 { public static void main(String[] args) { Fanjianan.getInstance()

C++ 数据结构学习二(单链表)

模板类 //LinkList.h 单链表#ifndef LINK_LIST_HXX#define LINK_LIST_HXX#include <iostream>using namespace std; template<class T>struct Node{ T data; Node * next;}; template<class T>class LinkList{ public: LinkList(); //无参构造函数,建立只有头结点的空链表 LinkList

PHP设计模式 二 (单例 工厂 注册)

单例模式 单例模式是一种常用的软件设计模式.在它的核心结构中只包含一个被称为单例类的特殊类.通过单例模式可以保证系统中一个类只有一个实例而且该实例易于外界访问,从而方便对实例个数的控制并节约系统资源.如果希望在系统中某个类的对象只能存在一个,单例模式是最好的解决方案. 数据库单例示例: <?php namespace Components; class Database { protected static $db; private function __construct(){ //单列模式