gpt4 book ai didi

C++ 模版双向链表的实现详解

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章C++ 模版双向链表的实现详解由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

代码如下所示:

复制代码 代码如下

#include <iostream> template <typename T> class double_linked {     struct node     {         T data;         node* prev;         node* next;         node(T t, node* p, node* n) : data(t), prev(p), next(n) {}     };     node* head;     node* tail; public:     double_linked() : head( NULL ), tail ( NULL ) {}     template<int N>     double_linked( T (&arr) [N]) : head( NULL ), tail ( NULL )     {         for( int i(0); i != N; ++i)             push_back(arr[i]);     }     bool empty() const { return ( !head || !tail ); }     operator bool() const { return !empty(); }     void push_back(T);     void push_front(T);     T pop_back();     T pop_front();     ~double_linked()     {         while(head)         {             node* temp(head);             head=head->next;             delete temp;         }     } }; template <typename T> void double_linked<T>::push_back(T data) {     tail = new node(data, tail, NULL);     if( tail->prev )         tail->prev->next = tail;     if( empty() )         head = tail; } template <typename T> void double_linked<T>::push_front(T data) {     head = new node(data, NULL, head);     if( head->next )         head->next->prev = head;     if( empty() )         tail = head; } template<typename T> T double_linked<T>::pop_back() {     if( empty() )         throw("double_linked : list empty");     node* temp(tail);     T data( tail->data );     tail = tail->prev ;     if( tail )         tail->next = NULL;     else         head = NULL ;     delete temp;     return data; } template<typename T> T double_linked<T>::pop_front() {     if( empty() )         throw("double_linked : list empty");     node* temp(head);     T data( head->data );     head = head->next ;     if( head )         head->prev = NULL;     else         tail = NULL;     delete temp;     return data; } int main() {     int arr[] = { 4, 6, 8, 32, 19 } ;     double_linked<int> dlist ( arr );     dlist.push_back( 11 );     dlist.push_front( 100 );     while( dlist )         std::cout << dlist.pop_back()  << " "; } 。

最后此篇关于C++ 模版双向链表的实现详解的文章就讲到这里了,如果你想了解更多关于C++ 模版双向链表的实现详解的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com