设某链表中最常用的操作是在链表的尾部_数据结构:链表的基本概念与操作

73c7d1a1a6df3de3d89f4ef865a59477.png

链表是IT公司面试中出现频率很高的数据结构。链表是一种动态数据结构,它通过指针将若干结点链接,对链表的基本操作有创建,插入节点,删除节点等等。

单链表的创建一般有两种方法,头插法和尾插法。

头插法即创建链表的时候,每次都在头部插入一个节点。有一个struct Node* headnode头结点指针,该指针指向链表第一个节点。当链表为空时,headnode指向空。每次在头部插入一个节点p,就将该节点的下一个指向头结点指向的指针,即链表之前的头部:p->next = headnode->next,p->val = val,headnode->next = p。然后头结点再指向新插入的节点。具体代码如下:

501357434e76fa749e322f00a8b1256c.png

尾插法与头插法相反,即每次在尾部插入一个新节点。有一个struct Node* tailnode头尾指针,该指针指向链表最后一个节点。当链表为空时,tailnode指向空。每次在尾部插入一个节点node,就将该节点的下一个指向NULL,即新插入的节点是链表的尾部:node->next = NULL,node->val = val,tailnode->next->next = node,tailnode->next = node。然后尾节点指向的节点是未插入新节点前的尾部,将该节点指向新插入的节点,tailnode->next->next = node,然后尾结点再指向新插入的节点。具体代码:

dfa455f3301915d6d503cdc415a6b07e.png

然后是删除一个节点,可以是删除链表指定值的节点,也可以是删除链表指定位置的节点。删除一个节点p,只要找到节点p的前一个节点q,让q直接指向p的下一个节点即可,q->next=p->next;我们以按值删除为例,具体代码如下:

5fe52205067dd5a6943d4749d33949f0.png

链表的插入操作可以是指定位置插入节点n,找到插入位置的前一个节点p,先将n指向p的下一个节点,n->next=p->next;然后将该节点指向要插入的节点n,p->next = n。以按索引插入为例,代码如下:

3ae02b7156335681844290ccf024f611.png

这里要注意细节,头插法中headnode指向第一个节点,但并不是第一个节点。

下一期将会介绍链表在面试中的常见问题。

本文所有代码均为本人编写并经过测试,如有错误或问题,欢迎留言或私信指正。

参考网络:https://zhidao.baidu.com/question/1924970858827563427.html

1af2bd5e38b7212113b512b0874fba6b.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值