数据结构—单链表双链表9.18

本文详细介绍了单链表、循环单链表及双链表的基本概念和实现方式,包括结点类定义、插入操作等关键算法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  单链表结点类Node<T>声明如下,成员变量data表示结点的数据域,保存数据元素,数据类型为T,next表示结点的指针域,保存后继结点的地址。文件名为Node.h

  template <class T>

  class Node

  {

      public;

      T data;

      Node<T>*next;

      Node()

      {

            this->next = NULL;

      }

      Node(T data ,Node <T>*next = NULL)

      {

   this->data = data;

      this->next = next;

      }

  }

Node类的一个对象表示单链表中的一个结点。通过next链,将两个结点连接起来。


插入操作:


空表插入:head = new Node<T>(x);

头插入: Node<T>*q = new Node <T>(x);

q->next = head;

head = q;

中间插入\尾插入:
Node<T>*q = new Node<T>(x);

q->next = front->next;

front->next = q;

带头结点的单链表

带头结点的单链表是指,在单链表的第0个结点之前增加一个特殊的结点,称为头结点,忽略其数据域。此时,空单链表就只有一个头结点。头结点的作用是,使得所有链表(包括空表)的头指针非空,则对单链表的插入,删除操作不需要分区操作位置。

循环单链表

如果单链表最后一个结点的next链保存单链表的头指针head值,则该单链表成为环形结构,称为循环单链表,循环单链表的结点同单链表结点类Node,当head->next == head时,循环单链表为空。其它操作算法与单链表相同。差别是,插入结点时,执行下列下列语句,使之成为一条循环单链表,设rear指针指向单链表最后一个结点。

rear->next = head;

双链表

每个结点有两个地址域的线性链表称为双链表,两个地址域分别指向前驱结点和后继结点。在单链表中,每个结点只有一个指向后继结点的链。若要查找前驱结点,必须从单链表的头指针开始沿着链表方向逐个检测,操作效率很低。此时,需要采用双向链表。

双链表结点类

template <class T>

class DoubleNode

{

public;

T data;

DoubleNode<T>*prev,*next;

DoubleNode()

{

this->prev = this->next = NULL;

}

DoubleNode(T data,DoubleNode<T>*prev =NULL,DoubleNode<T>*next = NULL)

{

this->data = data;

this->prev = prev;

this->next = next;

}

};


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值