双向链表的C++实现

本文详细介绍了如何使用C++实现双向链表,包括结点定义、链表类的构造与析构函数、清空链表、获取元素、判断链表状态、输出链表元素、插入与删除元素等操作。特别强调了在处理链表位置时防止越界的重要性,并给出了具体的代码实现。
摘要由CSDN通过智能技术生成

双向链表的C++实现

 

        双向链表与单向链表相比,各个结点多了一个指向前一个结点的指针。结构如图所示:

 

        双向链表的结点定义如下:

#ifndef SIMPLENODE_HPP
#define SIMPLENODE_HPP
template<typename T>        //再定义一个模板  写双链表 
class DoubleNode
{
public:
	T element;
	DoubleNode* prev;
	DoubleNode* next;
	DoubleNode(const T& theElement,DoubleNode* thePrev=NULL,DoubleNode* theNext=NULL)
		       :element(theElement),prev(thePrev),next(theNext) {}
	//这里已经创建了一个双链表 
}; 
#endif


       

        在组成一个双向链表后,还需要补充一些功能,以便后续实现,模仿之前的单向链表:

        1.定义这个双向链表类的构造函数及析构函数

        2.清空链表内所有元素

        3.给出元素位置再返回对应结点

        4.返回链表内部元素个数

        5.判断这个链表是否为空

        6.返回链表首尾的元素值

        7.查找元素是否在此链表内,如果在则返回所在位置

        8.从首端到尾端输出链表上的各元素,以及反序输出链表上各元素

        9.对链表插入元素以及删除元素

 

         给出这个双向链表类框架,就像这样:

#ifndef DOUBLELINKLIST_HPP
#define DOUBLELINKLIST_HPP
#include<iostream>
#include"simplenode.hpp"
template<typename T>
class DoubleLinkList
{
private:
	DoubleNode<T>* head;
	DoubleNode<T>* tail;
	int size;
	DoubleNode<T>* GetPointAt(in
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值