02 設計鍊錶(leecode 707)

2021-10-17 09:07:13 字數 2502 閱讀 8462

在鍊錶類中實現這些功能:

get(index):獲取鍊錶中第 index 個節點的值。如果索引無效,則返回-1。

addathead(val):在鍊錶的第乙個元素之前新增乙個值為 val 的節點。插入後,新節點將成為鍊錶的第乙個節點。

addattail(val):將值為 val 的節點追加到鍊錶的最後乙個元素。

addatindex(index,val):在鍊錶中的第 index 個節點之前新增值為 val 的節點。如果 index 等於鍊錶的長度,則該節點將附加到鍊錶的末尾。如果 index 大於鍊錶長度,則不會插入節點。如果index小於0,則在頭部插入節點。

deleteatindex(index):如果索引 index 有效,則刪除鍊錶中的第 index 個節點。

示例:

mylinkedlist linkedlist =

newmylinkedlist()

;linkedlist.

addathead(1

);linkedlist.

addattail(3

);linkedlist.

addatindex(1

,2);

//鍊錶變為1-> 2-> 3

linkedlist.

get(1)

;//返回2

linkedlist.

deleteatindex(1

);//現在鍊錶是1-> 3

linkedlist.

get(1)

;//返回3

class

mylinkedlist};

//成員變數定義

private

://鍊錶長度

int m_size;

//虛擬頭節點

linkednode *m_dummyhead;

public

://類建構函式

mylinkedlist()

//獲取鍊錶中第 index 個節點的值。如果索引無效,則返回-1。

intget

(int index)

return cur-

>val;

}//在鍊錶的第乙個元素之前新增乙個值為 val 的節點。

void

addathead

(int val)

//在鍊錶的最後乙個元素後新增乙個值為 val 的節點。

void

addattail

(int val)

// 末尾節點的下個節點為新節點

cur-

>next = newnode;

//鍊錶長度加1

m_size++;}

//在鍊錶中的第 index 個節點之前新增值為 val 的節點。如果 index 等於鍊錶的長度,則該節點將附加到鍊錶的末尾。如果 index 大於鍊錶長度,則不會插入節點。如果index小於0,則在頭部插入節點。

void

addatindex

(int index,

int val)

//新節點的下個節點是index節點

newnode-

>next = cur-

>next;

//index前乙個節點(cur)的下個節點是新節點

cur-

>next = newnode;

//鍊錶長度加1

m_size++;}

//如果索引 index 有效,則刪除鍊錶中的第 index 個節點。

void

deleteatindex

(int index)

//中間節點變數暫存index節點

linkednode *tmp =

newlinkednode(0

);tmp = cur-

>next;

//index前乙個節點(cur)的下乙個節點變為index的下乙個節點

cur-

>next = cur-

>next-

>next;

//釋放index節點的記憶體

delete tmp;

//鍊錶長度減1

m_size--;}

//列印鍊錶

void

printlinkedlist()

}};/**

* your mylinkedlist object will be instantiated and called as such:

* mylinkedlist* obj = new mylinkedlist();

* int param_1 = obj->get(index);

* obj->addathead(val);

* obj->addattail(val);

* obj->addatindex(index,val);

* obj->deleteatindex(index);

*/

Leecode回文鍊錶

貼 class solution string ss s reverse s.begin s.end if ss s return 1 return 0 我自己的思路比較無腦,就是讀出來轉成string反轉比較。然後看到乙個用棧來做的 之前也有想到,但是感覺對於121這種有些麻煩。class sol...

leecode分割鍊錶

給定乙個鍊錶和乙個特定值 x,對鍊錶進行分隔,使得所有小於 x 的節點都在大於或等於 x 的節點之前。你應當保留兩個分割槽中每個節點的初始相對位置。示例 輸入 head 1 4 3 2 5 2,x 3 輸出 1 2 2 4 3 5 解題思路 該題相當於乙個分類問題,基於給定引數x分大和小。基於示例解...

VBA7 0鍊錶

vba中沒有指標,但依舊可以模擬出鍊錶,而且和c語言中的鍊錶功能完全相同,使用方法也類似。可以實現節點的插入 刪除。以下是vba的 不過 正確性沒有經過測試,只是乙個可行的構想。定義雙向鍊錶的節點 public type node lastptrnode as long 上乙個節點的指標。實際上是陣...