#include
using namespace std;
//鍊錶的節點 節點裡應包含節點要儲存的資料和下乙個節點的指標
struct node
node():next(null){}
};//鍊錶類(頭結點的位置為-1 鍊錶是0~n-1 尾節點是n-1)
class list;
list::list()
list::~list()
node* list::_advance(const int n)
node* list::priornode(node *cur)
return lhs->next;
}int list::getlen()
node* list::gethead()
node* list::gettail()
node* list::find_index(const int index)
// 插入時需注意的幾點
//1. 鍊錶為空時,頭插入完後 尾節點tail向後移一位
//2. 尾插入完以後 尾節點tail向後移一位
void list::insert_list(const int index,const int value)
//刪除尾節點時 要將尾節點向前移一位
void list::remove_index(const int index)
void list::update(const int index,const int value)
node* list::find_value(const int value)
return lhs;
}void list::insert_tail(const int value)
//頭插入 鍊錶為空插入乙個元素時 尾節點要後移一位
void list::insert_head(const int value)
void list::printlist()
coutnode* rhs;
while(cur)
tail = head;
len = 0;
}//鍊錶翻轉
//當鍊表長度為0或者1時 結果與原鍊錶一樣 直接return
//當鍊表長度大於等於2時
//1.先將頭結點和下乙個節點與其他節點分開 並將頭結點的下乙個節點賦為尾節點
//2.將頭結點和下乙個節點作為乙個新鍊錶
//3.其他節點按原先鍊錶順序分別對新煉表作頭插入即可
void list::reverse_list()
}// 反轉是不斷進行頭插入
// 而排序是有條件的進行插入 原理差不多 但還是有些許差別 多一步 就是要找插入的位置
void list::sort_list()
}
單鏈表 尾插法
linklist creatlistr1 void r next null 終端結點的指標域置空,或空表的頭結點指標域置空 return head r next s r s 尾插法是向鍊錶尾部逐漸插入結點的,像演算法中描述的一樣,然後r先指向頭指標,s是要逐個插入的結點的指標,r next s這句是...
帶頭節點的單鏈表
需要注意 include define maxlen 20 define elementtype char using namespace std typedef struct slnode node 函式宣告 void initiallist node l int listlength node ...
單鏈表刪節點
題目 只給定鍊錶中的節點node,不給頭結點,如何在鍊錶中刪除node?實現這個函式,要求時間複雜度o 1 思路 該題當然是說單鏈表,如果雙鏈表就很容易了。比如單鏈表 1 2 3 4 5.現在只知道節點node 3,如何將其刪除。把節點4的值拷貝到節點3,然後刪除節點4 即node.next拷貝到n...