//【数据结构】用C++实现双链表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
//头文件
#ifndef _LIST_H
#define _LIST_H
#include<iostream>
using namespace std;
template<class Type>
class DList;
template<class Type>
class ListNode
{
friend class DList<Type>;
public:
ListNode() :data(Type()), next(NULL), prio(NULL)
{}
ListNode(Type d, ListNode<Type> *n = NULL,ListNode<Type> *m=NULL)
:data(d), next(n), prio(m)
{}
~ListNode()
{}
private:
Type data;
ListNode<Type> *next;
ListNode<Type> *prio;
};
template<class Type>
class DList
{
public:
DList()
{
first = last = Buynode();
}
~DList()
{
destroy();
}
public:
void push_back(const Type &x) //尾插``
{
ListNode<Type> *s = Buynode(x);
last->next = s;
s->prio = last;
last = s;
first->data++;
}
void push_front(const Type &x) //头插``
{
if (first->data == 0)
{
push_back(x);
return;
}
ListNode<Type> *s = Buynode(x);
s->next = first->next;
first->next->prio = s;
first->next = s;
s->prio = first;
last = s;
for (int i = 0; i < first->data; i++)
{
last = last->next;
}
first->data++;
}
void pop_back() //尾删``
{
if (first->data == 0)
return;
ListNode<Type> *p = last;
last = last->prio;
last->next = NULL;
delet
【数据结构】用C++实现双链表的各种操作(包括头删,尾删,插入,逆序,摧毁,清空等等)
最新推荐文章于 2022-05-04 19:48:11 发布