有一道資料結構順序表的題,怎麼解?

時間 2021-06-20 11:50:35

1樓:皮皮關

遇到困難的問題不要迷茫,先試著分解它。

這道題屬於鍊錶綜合問題,第二問略有難度。不要緊,先看第一問,第一問比較基礎。

當然,要解答第一問,只需要熟悉鍊錶的基本做法。先問問自己是否熟悉鍊錶的基本操作,鍊錶節點定義為:

#include

#include

#include

struct

Node

;// 基本用法:

intmain

(int

argc

,char

*argv

)第一問思路:

1、為方便後續操作,先建立乙個空字串的頭結點head。

2、先讓指標p指向頭結點head。讀取乙個單詞,如果它與p節點的word相同,則p->count++;如果它與當前節點的word不相等,則p = p->next,找下乙個節點。

3、如果p已經是NULL,表示已經到了鍊錶末尾,說明需要為這個新單詞新增新節點。

依次讀取所有單詞,第一問即可完成。

第二問:

第二問有很多優化的想法,不過既然在知乎上問了,就說個最基本、最好想的思路:

1、找前N個最大值,最簡單的辦法就是排序。

2、鍊錶不好排序,很容易想到先轉成陣列再排序。

3、於是問題變成了:把鍊錶轉成陣列。準備乙個和鍊錶一樣長的陣列,遍歷鍊錶,把內容拷貝到陣列裡即可。陣列元素既有word又有count,其中的知識點是如何建立struct陣列。

4、隨便寫個排序演算法,按count的值從大到小排序,取前N個單詞即可。

第二問完成。

總而言之,遇到困難的問題不要迷茫,先試著分解它。

2樓:花火

要看有沒有其他的附加條件限制,如果沒有的話,而且只能建立這樣子的乙個鍊錶,那就只能按照順序建立,然後每一次要增加的時候遍歷鍊錶增加節點進行查詢,然後利用二重迴圈進行輸出。

結構體可以用如下的:

struct

node

資料結構中,順序表的插入操作,為什麼方法要用指標,直接操作struct不可以嗎?

孫磊 用指標就是 insert list 不用指標就是 list a insert list 之後用a就可以了,注意釋放指標 效率較低罷了 人民萬歲 隨便一本c語言書上,都介紹了形式引數和實際引數。裡面肯定有幾個好例子,其中涉及到了指標,建議你看看。你的疑惑,也就來自於你對這一塊知識點沒搞懂。直接用...

一道演算法題,沒有思路,該怎麼解?

左方園 與 張一釗 和 默然 回答差不多,我能想到的是,可以構建乙個圖,然後做BFS,當然可以不用顯式構造這個圖,直接用乙個佇列然後BFS,搜到指定結果就返回 一定有解的情況下 具體的思路是這樣的 以題目中的示例為例,可以這樣構建乙個圖,圖的起點是0,從起點出發有四條邊,依次是1,2,6,8,到達的...

有哪些分塊好題,最好是純資料結構做不了的?

RhmBWT 你可以看看YNOI2018 裡面好多分塊題的 Problem 5143.Ynoi2018 五彩斑斕的世界Problem 5144.Ynoi2018 末日時在做什麼?有沒有空?可以來拯救嗎?Problem 5145.Ynoi2018 未來日記 感覺比無腦分塊好一些的 退役多年的老鹹魚厚顏...