在无头单链表的一个非头节点前插入一个节点

原创 2016年06月01日 00:52:31

思路:
由于单链表的单向性,所以我们现在这个非头结点的后面插入一个节点,然后在交换这两个节点就可以了。

头文件:链表定义

#include<stdio.h>
#include<assert.h>
#include<stdlib.h>
typedef int DataType;
typedef struct strNode
{
    struct strNode* pNext;
    DataType  data;
}Node;

typedef struct strNode*  PNode;

下面是具体实现代码


PNode Buy_Node(DataType data)//创建节点!!!
{
    PNode tmp = (PNode)malloc(sizeof(Node));//开辟一个空间节点
    if (tmp == NULL)
    {
        return NULL;
    }
    tmp->data = data; 
    tmp->pNext = NULL;
    return tmp;
}

void InsertNotHeadNode(PNode pos, DataType data)
{
    PNode PNewnode = NULL;
    PNode _pos = pos;  //记住原来节点的位置
    assert(pos);
    PNewnode = Buy_Node(data);
    PNewnode->pNext = _pos->pNext;
    _pos->pNext = PNewnode; 
    _pos->data = _pos->pNext->data;
    _pos->pNext = _pos->pNext->pNext;
    free(PNewnode);
}
版权声明:本文为博主原创文章,转载需标明出处。

单链表(无头节点)的实现

链表:链表是一种顺序表,但并不是顺序存储,每个节点都存储着一个指向下一个节点的指针,把存储的数据元素连接起来//SlistNode #pragma once #define _CRT_SECURE_N...
  • xs_520
  • xs_520
  • 2016年12月12日 20:14
  • 1268

实现无头结点单链表的基本操作函数

基于单链表经常见的面试题——基础篇 基于单链表的面试题——进阶篇什么是无头结点链表??? singlelinkedlist.h头文件#ifndef __SINGLELINKEDLIST_H__ ...
  • Quinn0918
  • Quinn0918
  • 2017年06月09日 17:29
  • 1006

单链表实现(C语言版,无头结点)

前言:单链表:它是一种链式储存的线性表,用一组地址任意的储存单元存放线性表的数据元素;称储存单元为一个结点;结点:值域+指针域 链表:二、代码实现(1)结点定义:typedef int DataTy...
  • gogogo_sky
  • gogogo_sky
  • 2017年05月02日 02:42
  • 743

单链表操作之在当前节点前插入一个元素

***单链表操作之在当前节点前插入一个元素*** //在当前结点前插入一个元素,没有给头指针; //定义的结点的结构体和头指针的结构体; typedef ...
  • bitboss
  • bitboss
  • 2016年06月08日 08:37
  • 3420

数据结构之—线性表之—浅谈单链表有头结点和无头节点

有头结点的链表统一了算法的实现,无头节点减少了节点个数,但是只有根据实际情况选用真正的有无头接链表 待续://代码实现 待续://代码实现 待续://代码实现...
  • kai8wei
  • kai8wei
  • 2015年04月26日 10:45
  • 3757

【c/c++】单链表、头指针、头结点、首元节点

链表中第一个结点的存储位置叫做头指针,那么整个链表的存取就必须是从头指针开始进行了。之后的每一个结点,其实就是上一个的后继指针指向的位置。 这里有个地方要注意,就是对头指针概念的理解,这个很重要。“...
  • lzm18064126848
  • lzm18064126848
  • 2016年03月07日 15:17
  • 3022

头插法和尾插法建立带头节点的单链表

有两种方法建立单链表,尾插法和头插法,他们的区别是:头插法是按照输入元素倒序建立,为尾插法为顺序插入,并且多一个尾节点,我们一般使用尾插法。 一.头插法 代码为:pCurr -> next =...
  • awjzb
  • awjzb
  • 2016年04月12日 11:49
  • 571

编程复习4链表移动

编写一个函数,将给定的带有头结点的单向链表的前m个节点移到链尾。     结构的定义: struct node {  int num;              struct node *next; ...
  • java_student09
  • java_student09
  • 2013年01月10日 10:45
  • 1690

数据结构 《3》----双向链表(带有头节点)

本文参照了 C与指针中双向链表的实现,力求简单明了。 双向链表带有一个头节点,        头节点的pre指针指向链表的最后一个node;        next指向第一个node;        ...
  • u012653791
  • u012653791
  • 2014年01月15日 21:48
  • 2098

链表指针新理解以及插入里链表节点新方法

自立志开始学习编程开始已经有一周左右,作为一个freshman和greenhead,不得不说对指针的理解还不是很好,特别在学习链表时对链表指针的思考也让我相当有收获。在我看来,数据结构教科书上对链表的...
  • coderhuhy
  • coderhuhy
  • 2014年10月29日 13:24
  • 1253
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在无头单链表的一个非头节点前插入一个节点
举报原因:
原因补充:

(最多只允许输入30个字)