題目描述:
已知乙個帶有表頭結點的單鏈表,結點結構為(data,link),假設該鍊錶只給出了頭指標list。在不改變鍊錶的前提下,請設計乙個盡可能高效的演算法,查詢鍊錶中倒數第k個位置上的結點。若查詢成功,演算法輸出該結點的data域的值,並返回1;否則,只返回0.
思路:定義兩個指標p和q,指標p用來遍歷整個鍊錶,指標q剛開始指向鍊錶第乙個元素;
當p走了k-1步後,q開始走,當p走到表尾時,p所指的恰為倒數第k個結點。
**:
int getnode(lnode *list,int k)
if(p==null)//k太大了
return 0;
while(p)
cout#include#include #include//數學函式,求平方根、三角函式、對數函式、指數函式...
#define maxsize 15
//用於使用c++的輸出語句
#includeusing namespace std;
t
倒序輸出單鏈表的內容
單鏈表是最簡單的資料結構,同時也是最常接觸的資料結構,這個問題也很常見,通常這個問題我們有兩種解決辦法。1.逆置單鏈表之後輸出 這篇文章講述了這樣的過程 但是這種方法不一定可行,因為這樣改變了單鏈表原來的結構 2.利用棧的後進先出的思想,首先我們正序輸出單鏈表中的每乙個節點,在輸出的過程中我們把這些...
單鏈表的查詢
單鏈表查詢可分為按值查詢和按序號查詢。include include typedef struct linknode node,linklist linklist表示結構體指標 linklist createlist end int n 尾插法建立鍊錶 linklist findval linkli...
查詢單鏈表中間元素
查詢單鏈表中間元素 include using namespace std struct linknode class linklist linklist void insertvalue int nvalue void reverse void reverse2 linknode findlast...