成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

對C++鏈表進行解讀分析

開發(fā) 后端
使用C++語言來進行開發(fā)時,C++鏈表是最為常見,并且經(jīng)常需要使用到的數(shù)據(jù)結(jié)構(gòu)之一,例如創(chuàng)建鏈表、插入、刪除。

C++語言是學(xué)習(xí)數(shù)據(jù)結(jié)構(gòu)的很好的學(xué)習(xí)工具,能夠全面的理解了C++中C++鏈表的作用和用途,那么對于理解其C++描述,Java描述都就輕而易舉了,以后學(xué)習(xí)什么語言都不會覺得難了。

鏈表的交換節(jié)點的含義是:給定一個單鏈表,要求交換其中的任意兩個節(jié)點。注意這里鏈表的頭節(jié)點是不參與節(jié)點交換的。這個看上去是比較簡單,但是實現(xiàn)起來卻還是需要一定的基本功。

對于這個問題,關(guān)鍵是要用4個指針來保存兩個交換的節(jié)點的前后節(jié)點位置,具體實現(xiàn)請參見實現(xiàn)源碼。實際上,還有一個邏輯更加清晰的實現(xiàn):只要用兩個指針保存當前的兩個交換節(jié)點的前一個節(jié)點。#t#

然后依次刪除待交換節(jié)點,再在記錄的前一個節(jié)點后交替插入刪除的兩個節(jié)點,也就是實際上將這個過程轉(zhuǎn)化為了對于C++鏈表的兩個基本操作就可以完成了。但是要注意的是,這個實現(xiàn)中當兩個交換節(jié)點是相鄰節(jié)點的時候會出現(xiàn)問題,要單獨處理,具體原因手工操作一次即可得知。后一種方法這里就不給出了。

實現(xiàn)代碼中要說明的是,交換C++鏈表節(jié)點傳入的是兩個交換節(jié)點指針,但是為了測試簡單實現(xiàn),將這兩個節(jié)點換成了待交換節(jié)點的關(guān)鍵字(值域),再到C++鏈表中定位。

具體實現(xiàn)源碼為:

  1. //Link.h  
  2.   #include <iostream> 
  3.   #include <ctime> 
  4.   struct Node  
  5.   {  
  6.   public:  
  7.   Node():_val(0),_next(NULL)  
  8.   {  
  9.   }  
  10.   Node(int val):_val(val),_next(NULL)  
  11.   {  
  12.   }  
  13.   Node(int val,Node* next):_val(val),_next(next)  
  14.   {  
  15.   }  
  16.   ~Node()  
  17.   {  
  18.   if (_next)  
  19.   delete _next;  
  20.   }  
  21.   public:  
  22.   int _val;  
  23.   Node* _next;  
  24.   };  
  25.   typedef Node* LinkNode;  
  26.   Node* CreateLink(int len,int MAX_BOUND = 100)  
  27.   {  
  28.   srand((unsigned int)time(NULL));  
  29.   LinkNode head = new Node(-1);  
  30.   LinkNode tmp = head;  
  31.   for (int i = 0; i < len; ++i)  
  32.   {  
  33.   //tmptmp = tmp->_next = new Node(rand() % MAX_BOUND);  
  34.   tmptmp = tmp->_next = new Node(i);  
  35.   }  
  36.   tmp->_next = NULL;  
  37.   return head;  
  38.   }  
  39.   void ExchLinkNode (const LinkNode head,int i1,int i2)  
  40.   {  
  41.   //head不準被交換  
  42.   LinkNode prenode1 = NULL;  //保存待交換節(jié)點node1的前一個節(jié)點  
  43.   LinkNode postnode1 = NULL; //保存待交換節(jié)點node1的后一個節(jié)點  
  44.   LinkNode prenode2 = NULL;  //保存待交換節(jié)點node2的前一個節(jié)點  
  45.   LinkNode postnode2 = NULL; //保存待交換節(jié)點node2的后一個節(jié)點  
  46.   LinkNode node1 = NULL;     //保存待交換的節(jié)點  
  47.   LinkNode node2 = NULL;     //保存待交換的節(jié)點  
  48.   LinkNode tmp = head;  
  49.   //定位兩個節(jié)點  
  50.   while ((tmp->_val != i1) && (tmp != NULL))  
  51.   {  
  52.   tmptmp = tmp->_next;  
  53.   }  
  54.   if (tmp == NULL)  
  55.   {  
  56.   return ;  
  57.   }  
  58.   else  
  59.   {  
  60.   node1 = tmp;  
  61.   }  
  62.   tmp = head;  
  63.   while ((tmp->_val != i2) && (tmp != NULL))  
  64.   {  
  65.   tmptmp = tmp->_next;  
  66.   }  
  67.   if (tmp == NULL)  
  68.   {  
  69.   return ;  
  70.   }  
  71.   else  
  72.   {  
  73.   node2 = tmp;  
  74.   }  
  75.   //不得和頭節(jié)點交換  
  76.   if (node1 == head)  
  77.   {  
  78.   return ;  
  79.   }  
  80.   else if (node2 == head)  
  81.   {  
  82.   return ;  
  83.   }  
  84.   //自己和自己就不必交換了  
  85.   if (node1 == node2)  
  86.   {  
  87.   return ;  
  88.   }  
  89.   tmp = head;  
  90.   while (tmp->_next != node1)  
  91.   {  
  92.   tmptmp = tmp->_next;  
  93.   }  
  94.   prenode1 = tmp;  
  95.   tmp = head;  
  96.   while (tmp->_next != node2)  
  97.   {  
  98.   tmptmp = tmp->_next;  
  99.   } 
責(zé)任編輯:chenqingxiang 來源: javaeye.com
相關(guān)推薦

2010-02-06 09:46:46

C++單向鏈表

2010-01-20 17:48:07

C++ 函數(shù)重載

2010-01-13 18:47:53

C++教程

2010-01-15 17:18:57

C++源程序

2010-01-11 11:16:37

C++編程

2010-01-11 15:36:08

C++代碼

2010-01-21 14:07:14

CC++聲明

2010-01-13 11:10:17

C++庫函數(shù)

2010-02-01 11:22:09

C++虛函數(shù)

2010-02-05 16:46:58

C++ TinyXml

2010-01-15 15:52:18

CC++

2010-01-15 10:41:06

CC++

2010-01-13 14:35:10

Visual C++

2010-01-28 10:33:10

C++開發(fā)程序

2010-02-22 15:49:35

Python應(yīng)用程序

2010-01-20 14:35:55

C++調(diào)用

2010-02-05 11:23:01

C++聲明語法

2010-02-03 15:58:51

C++ timer

2010-02-06 16:59:19

C++ kmp算法模板

2010-02-04 09:33:08

C++指針重載
點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 天天夜夜操 | 日韩精品一区二区三区视频播放 | 另类二区 | 天天操天天干天天透 | 欧美成人手机在线 | 九九色综合 | 理论片87福利理论电影 | 日韩中文字幕在线观看 | 国产在线不卡视频 | 国产欧美日韩一区二区三区在线 | 日韩欧美专区 | 国产精品污www在线观看 | 激情婷婷成人 | 亚洲精品视频免费看 | 亚洲精品在线看 | 久久久久久久国产 | 国产精品久久久久久238 | 日韩高清一区 | 久久久久久国产精品免费免费男同 | 国产欧美久久精品 | 99久久久国产精品免费消防器 | 国产在线一区二区三区 | 九九精品视频在线 | 草草视频在线观看 | 伊人超碰 | 国产亚洲日本精品 | 免费国产精品久久久久久 | 成人免费网视频 | 日韩欧美理论片 | 操操操操操 | 国产乱码一二三区精品 | 99久久免费精品国产男女高不卡 | 欧美精品一区二区三区在线四季 | 亚洲欧美视频一区 | av手机免费在线观看 | 日朝毛片| 成人在线黄色 | 视频一区二区三区在线观看 | 亚洲精品一区国语对白 | 亚洲久草| 日韩电影在线一区 |