亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

利用C++實現雙鏈表基本接口示例代碼

2020-01-26 13:59:10
字體:
來源:轉載
供稿:網友

鏈表

鏈表是一種物理存儲單元上非連續、非順序的存儲結構,數據元素的邏輯順序是通過鏈表中的指針鏈接次序實現的。鏈表由一系列結點(鏈表中每一個元素稱為結點)組成,結點可以在運行時動態生成。每個結點包括兩個部分:一個是存儲數據元素的數據域,另一個是存儲下一個結點地址的指針域。 相比于線性表順序結構,鏈表比較方便插入和刪除操作。

本文主要給大家介紹了關于C++實現雙鏈表基本接口的相關內容,分享出來供大家參考學習,話不多說,來一起看看詳細的介紹吧。

首先先簡單通過圖示區分單鏈表和雙鏈表的結構差異:

單鏈表的基本接口實現可參考:單鏈表簡單實現

接下來就是雙鏈表的基本接口實現:

#include <iostream>#include <assert.h>using namespace std;typedef int DataType;struct ListNode{ ListNode* _next; ListNode* _prev; DataType _data; ListNode(DataType x)  :_next(NULL)  , _prev(NULL)  , _data(x) {}};typedef ListNode Node;class List{public: List()  :_head(NULL)  ,_tail(NULL) {} List(const List& l)  :_head(NULL)  ,_tail(NULL) {  Copy(l); } void Copy(const List& l) {  Node* cur = l._head;  while (cur)  {   PushBack(cur->_data);   cur = cur->_next;  } } List& operator=(const List& l) {  Destory();  Copy(l);  return *this; } ~List() {  Destory(); } void Destory() {  if (_head)  {   Node* cur = _head;   while (_head)   {    cur = _head;    _head = _head->_next;    delete cur;   }   _head = _tail = NULL;  } } void PushBack(DataType x) {  if (_head == NULL)  {   Node* tmp = new Node(x);   tmp->_next = tmp->_prev = NULL;   _head = _tail = tmp;  }  else  {   Node* tmp = new Node(x);   _tail->_next = tmp;   tmp->_prev = _tail;   _tail = tmp;  } } void PopBack() {  if (_head == NULL)  {   return;  }  else if (_head->_next == NULL)  {   delete _head;   _head = _tail = NULL;  }  else  {   Node* tmp = _tail;   _tail = _tail->_prev;   _tail->_next = NULL;   delete tmp;  } } void PushFront(DataType x) {  if (_head == NULL)  {   _head = _tail = new Node(x);  }  else  {   Node* tmp = new Node(x);   tmp->_next = _head;   _head->_prev = tmp;   _head = _head->_prev;  } } void PopFront() {  if (_head == NULL)  {   return;  }  else if (_head->_next == NULL)  {   delete _head;   _head = _tail = NULL;  }  else  {   Node* tmp = _head;   _head = _head->_next;   delete tmp;   _head->_prev = NULL;  } } Node* Find(DataType x) {  Node* cur = _head;  while (cur)  {   if (cur->_data == x)    return cur;   cur = cur->_next;  }  return NULL; } // 在pos的前面插入x void Insert(Node* pos, DataType x) {  assert(pos);  if ((pos == 0) || (pos->_prev == NULL))  {   PushFront(x);  }  else  {   Node* font = pos->_prev;   Node* tmp = new Node(x);   tmp->_prev = font;   tmp->_next = pos;   font->_next = tmp;   pos->_prev = tmp;  } } //刪除pos位置的元素 void Erase(Node* pos) {  assert(pos);  if ((pos == 0) || (pos->_prev == NULL))  {   PopFront();  }  else if (pos->_next == NULL)  {   PopBack();  }  else  {   Node* font = pos->_prev;   Node* last = pos->_next;   font->_next = last;   last->_prev = font;   delete pos;  } } //逆序整個雙鏈表 void Reverse() {  Node* cur = _head;  while (cur)  {   swap(cur->_next,cur->_prev);   cur = cur->_prev;  }  swap(_head, _tail); } void Print() {  Node* cur = _head;  while (cur)  {   cout << cur->_data << "->";   cur = cur->_next;  }  cout << "NULL" << endl; }private: Node* _head; Node* _tail;};

注:在一些操作實現時,一定要要考慮清楚各種情況,再進行情況的分類盡量提高代碼的復用程度。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流,謝謝大家對武林網的支持

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
色老头一区二区三区| 国产精品揄拍一区二区| 日韩av在线不卡| 国产成人jvid在线播放| 97精品视频在线播放| 国产97人人超碰caoprom| 久久久亚洲欧洲日产国码aⅴ| 欧美专区在线播放| 国产亚洲一区二区精品| 91在线高清免费观看| 91网站在线看| 欧美有码在线视频| 欧美成人激情视频免费观看| 国产成人久久久| 中文字幕欧美在线| 亚洲国产高清高潮精品美女| 亚洲成年网站在线观看| 欧美日韩中文字幕| 日韩欧美中文字幕在线观看| 韩剧1988在线观看免费完整版| 国产在线观看91精品一区| 国产精品香蕉国产| 高清欧美性猛交xxxx| 尤物九九久久国产精品的特点| 国产精品永久免费视频| 欧美精品午夜视频| 91成人在线视频| 亚洲美女性生活视频| 日本亚洲欧美成人| 狠狠久久亚洲欧美专区| 久久久久999| 久久av在线看| 日韩av成人在线| 亚洲欧美中文在线视频| 亚洲精品短视频| 欧美另类精品xxxx孕妇| 欧美午夜女人视频在线| 日本精品视频在线| 国产亚洲精品久久久久久| 91精品国产综合久久男男| 日韩精品免费在线观看| 国自在线精品视频| 在线免费看av不卡| 日韩中文字幕欧美| 亚洲精品久久久久久久久久久久久| 91影院在线免费观看视频| 尤物99国产成人精品视频| 亚洲va欧美va国产综合久久| 欧美精品久久久久久久久久| 98精品国产自产在线观看| 久久亚洲欧美日韩精品专区| 欧美亚洲伦理www| 国产91精品黑色丝袜高跟鞋| 国产精品av电影| 国产不卡在线观看| 日韩在线中文字| 亚洲精品视频中文字幕| 欧美精品性视频| 欧美视频不卡中文| 欧美洲成人男女午夜视频| 久久精品一本久久99精品| 国产在线视频2019最新视频| 日韩中文字幕精品视频| 国产精品扒开腿爽爽爽视频| 中文字幕av日韩| 欧美大片网站在线观看| 中文字幕日韩综合av| 亚洲精品美女视频| 欧美午夜影院在线视频| 91精品国产综合久久久久久久久| 奇门遁甲1982国语版免费观看高清| 国产精品久久久久久久久久免费| 欧美精品久久一区二区| 日韩亚洲成人av在线| 91国内产香蕉| 久久视频这里只有精品| 欧美日韩亚洲天堂| 色综合久综合久久综合久鬼88| 久久久成人精品视频| 色综合91久久精品中文字幕| 久久伊人色综合| 欧美激情精品久久久久| 一区二区三区精品99久久| 97在线观看免费高清| 4388成人网| 日韩成人激情影院| 日韩成人在线免费观看| 中文字幕亚洲综合| 国产日韩欧美视频| 亚洲人成在线观看| 欧美国产第一页| 欧美中文字幕在线播放| 最近2019免费中文字幕视频三| 国产成人av网址| 日本在线精品视频| 欧美午夜无遮挡| 亚洲国产天堂久久综合网| 中国日韩欧美久久久久久久久| 97涩涩爰在线观看亚洲| 欧美精品成人91久久久久久久| 欧美精品videosex极品1| 国产女同一区二区| 精品福利免费观看| 精品少妇v888av| 欧美一性一乱一交一视频| 亚洲大胆人体视频| 7777kkkk成人观看| 欧美激情啊啊啊| 欧美精品午夜视频| 91在线播放国产| 欧美性猛交99久久久久99按摩| 成人黄色生活片| 国产成人精品在线播放| 久久精品国产一区二区电影| 久久久久久69| 欧美亚洲激情在线| 色综合导航网站| 亚洲欧美www| 国产精品久久久久久久久借妻| 蜜臀久久99精品久久久无需会员| 成人激情视频小说免费下载| 日韩av片免费在线观看| 在线视频中文亚洲| 亚洲国产日韩欧美在线99| 日本精品在线视频| 日本精品视频在线| 中文字幕视频在线免费欧美日韩综合在线看| 久久99热精品这里久久精品| 欧美日韩一区二区三区| 久久精品成人一区二区三区| 久久综合免费视频影院| 日韩av黄色在线观看| 色哟哟亚洲精品一区二区| 国产精品亚洲视频在线观看| 欧美在线日韩在线| 日本久久中文字幕| 亚洲一级黄色片| 成人免费网视频| 高跟丝袜一区二区三区| 91久久精品国产| 成人性生交大片免费观看嘿嘿视频| 欧美日韩免费区域视频在线观看| 久久这里有精品视频| 亚洲黄色成人网| 日韩av在线网站| 日韩激情av在线免费观看| 91在线免费网站| 日韩精品免费一线在线观看| 高清欧美电影在线| 久久久久这里只有精品| 久久免费视频在线| 美女av一区二区| 欧美最顶级丰满的aⅴ艳星| 国内精品久久久久久久久| 欧美性高跟鞋xxxxhd| 在线国产精品视频| 538国产精品一区二区在线| 欧美日韩亚洲视频| 亚洲美女精品成人在线视频| 青草成人免费视频| 欧美色视频日本高清在线观看| 亚洲高清免费观看高清完整版| 久久免费视频这里只有精品| 日韩亚洲第一页|