單向鍊錶的查詢問題

2021-06-20 19:29:52 字數 639 閱讀 9757

題目:

輸入乙個單向鍊錶。如果該鍊錶的結點數為奇數,輸出中間的結點;如果鍊錶結點數為偶數,輸出中間兩個結點前面的乙個。

思考:最簡單的解法:從頭到尾遍歷一遍陣列,得到鍊錶大小n。然後再從頭走n/2次,則一共需要的時間為1.5n。

優化:想起以前一道題目,用n的方法反轉乙個單向鍊錶。如果只用乙個變數header,是不可能的,用了preheader,proheader,nowheader三個變數則變成了一種可能。那就想一想有沒有空間換時間的可能性。假如一開始我用兩個變數,firstheader,secheader,題目要求的輸出結點總是結點總和的一半,那我可不可以first和sec一起走,但是每次都是sec走兩下first走一下,當sec到達末尾後,first剛好走了一半。通過多了乙個變數,來節約了0.5n次的時間。

**:

struct node;

class list

node* findnode()

node* first = header;

node* sec =header;

int walkcount = 0;

while (sec!=null)

}return first;

} node* header;

};

單向鍊錶的查詢 openjudge

總時間限制 2ms記憶體限制 1024kb 描述建立乙個鏈式儲存的線性表,要求找出該煉表中值為x的元素有多少個?輸入輸入若干整數,以0結束。再輸入x的值 輸出 x在鍊錶中出現的次數 樣例輸入 3 2 3 3 5 8 5 3 0 3 樣例輸出 4 提示本題只有一組測試資料,不需要重複 這答題咋一看挺水...

單向鍊錶的遍歷 查詢

單向鍊錶的建立在這裡不在贅述,詳細請看另一篇文章 單向鍊錶的建立 在本篇文章中,主要通過舉例的方式來幫大家理解單向鍊錶的基本遍歷。本篇文章中建立節點用以下表示 typdef struct node elemsn 例一 輸出單向鍊錶尾節點的值 void printtail elemsn head 傳遞...

單向鍊錶逆序問題

問題 將乙個單向單向鍊錶逆序倒轉,要求o n 的時間複雜度和o 1 的空間複雜度 該問題有兩種解法,一種非遞迴,一種是遞迴,如下 include include link.h typedef struct linknode linknode 遞迴 linknode reverselink linkn...