含有尾節點的單鏈表

2021-08-15 06:48:38 字數 1426 閱讀 3611

#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...