无头单链表

原创 2017年12月20日 22:58:55

一、无头单链表的非尾节点删除(不能遍历链表)
我们无法删除该节点,我们可以下一个节点的值给该节点,再删除下一个节点
代码如下:

void NoHeadSeqListDelete(SListNode *pos) //删除一个无头链表的非尾节点(不能遍历链表)
{
    SListNode*tmp; 
    tmp=pos->_next;  //保存pos->_next的值,方便一会销毁
    pos->_data=pos->_next->_data;
    pos->_next=pos->_next->_next;
    free(tmp);  //销毁pos->_next
    tmp=NULL;
}

二、无头单链表的插入(不能遍历链表)
和删除方法类似,我们不能直接在原节点前面插入,我们可以创建新节点,把新节点的值和原节点交换。
代码如下:

//创建一个新节点,替换原来的插入节点的值,再把插入值赋给原节点
void NoHeadSeqListInsert(SListNode*pos,DataType x) //在无头链表的一个节点前插入一个节点(不能遍历链表)
{
    SListNode *newNode;
    newNode=BuySListNode(x);  //创建新节点
    newNode->_next=pos->_next;  
    pos->_next=newNode;
    newNode->_data=pos->_data;
    pos->_data=x;
}

三、运行结果
这两个代码较简单,就不分别测试了,同一结果看下图。
这里写图片描述

版权声明:本文为博主原创文章,转载请私信博主。

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

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

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

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

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

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

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

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

从无头单链表中删除节点及单链表的反转操作

问题描述:假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(不是第一个,也不是最后一个节点),请将该节点从单链表中删除。 一般链表的删除需要顺着头结点向下找到当前待删节点的前...
  • zheng123123123123
  • zheng123123123123
  • 2013年09月10日 15:50
  • 850

《编程之美》——从无头单链表中删除节点

问题: 假设有一个没有头指针的单链表。一个指针指向此单链表中间的一个节点(非第一个节点, 也非最后一个节点)。请将该节点从单链表中删除。分析与解法: 若要删除该节点,正常情况下,应该要知道该节点的...
  • zengzhen_CSDN
  • zengzhen_CSDN
  • 2015年11月04日 16:25
  • 643

无头单链表的各种操作

//本源码采用二级指针,实现了无头单链表的各种操作 #include #include typedef int elemtype; typedef struct node { elemty...
  • zhouxinkai311
  • zhouxinkai311
  • 2014年03月03日 17:58
  • 1083

单链表的创建(有头结点和无头结点)

1、有头结点的单链表的创建#include using namespace std;struct ListNode{ int val; ListNode *next; };//有头...
  • qq_36748278
  • qq_36748278
  • 2017年01月14日 13:37
  • 2567

在无头结点的动态单链表上实现线性表操作Insert(L,i,b)

在无头结点的动态单链表上实现线性表操作Insert(L,i,b) 单链表类型定义如下:...
  • u013228403
  • u013228403
  • 2014年04月09日 17:18
  • 2055

试编写在无头结点的单链表上实现线性表的插入操作的算法,并和带头结点的单链表上的插入操作的算法进行比较

//无头结点,头指针为 head void LinkList::Insert(int i, DataType x) {     p = head;     int count = 1;     if...
  • dancheng1
  • dancheng1
  • 2016年10月05日 10:08
  • 1520
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:无头单链表
举报原因:
原因补充:

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