龙跃十二

唯有坚韧者始能遂其志

无头单链表

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

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;
}

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

阅读更多
版权声明:本文为博主原创文章,转载请私信博主。 https://blog.csdn.net/qq_38646470/article/details/78858625
个人分类: 数据结构
所属专栏: 数据结构
想对作者说点什么? 我来说一句

无头结点链表实现

2012年12月01日 2KB 下载

没有更多推荐了,返回首页

不良信息举报

无头单链表

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭