chap 16 鍊錶

2021-07-04 07:28:14 字數 1653 閱讀 9833

#ifndef linkedlist_h

#define linkedlist_h

#include using namespace std;

templateclass node

node(t element) // constructor

};templateclass linkedlist

;templatelinkedlist::linkedlist()

templatevoid linkedlist::addfirst(t element)

templatevoid linkedlist::addlast(t element)

else

size++;

}templatet linkedlist::getfirst()

templatet linkedlist::getlast()

templatet linkedlist::removefirst() throw (runtime_error)

}templatet linkedlist::removelast()

else }

templatevoid linkedlist::add(t element)

templatevoid linkedlist::add(int index, t element)

}templatevoid linkedlist::clear()

tail = null;

}templatet linkedlist::get(int index)

templateint linkedlist::indexof(t element)

return -1;

}templatebool linkedlist::isempty()

templateint linkedlist::getsize()

templatet linkedlist::removeat(int index)

node*current = previous->next;

previous->next = current->next;

size--;

t element = current->element;

delete current;

return element;

}}// the functions remove(t element), lastindexof(t element),

// contains(t element), and set(int index, t element) are

// to be continued...

#endif

如果預先不知道元素的數目,使用鍊錶的效率更高,因為鍊錶可以動態增長和縮減。如果需要頻繁地向陣列總任意位置插入和刪除元素,使用鍊錶效率更高,因為在陣列中進行插入操作需要移動插入點後的所有元素。如果元素數目固定,也不需要隨機插入和刪除操作,那麼使用陣列更為簡單,效率也更高。
#include #include #include "linkedlist.h"

using namespace std;

void printlist(linkedlistlist)

16 鍊錶 鍊錶中環的入口節點(python版)

給乙個鍊錶,若其中包含環,請找出該鍊錶的環的入口結點,否則,輸出null。class solution def entrynodeofloop self,phead templist p phead while p if p in templist return p else templist.p ...

面試題16 反轉鍊錶

題目描述 輸入乙個鍊錶,反轉鍊錶後,輸出鍊錶的所有元素。hint 請務必使用鍊錶 輸入 輸入可能包含多個測試樣例,輸入以eof結束。對於每個測試案例,輸入的第一行為乙個整數n 0 n 1000 代表將要輸入的鍊錶的個數。輸入的第二行包含n個整數t 0 t 1000000 代表鍊錶元素。輸出 對應每個...

面試題16 反轉鍊錶

題目 定義乙個函式,輸入乙個鍊錶的頭結點,反轉該鍊錶並輸出反轉後鍊錶的頭結點。思路 設定三個指標p q temp,p用來指向當前結點,q用來指向當前結點的前乙個結點,temp指向當前結點的下乙個結點,遍歷鍊錶的結點時,先儲存當前結點p的下乙個結點到temp,然後讓當前結點的next指向前乙個結點p,...