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