e495: pasta operation

e495: pasta operation

題 意:
有 七 種 操 作,顯 示 這 個 檔 案 的 子 檔 案、創 建 一 個 檔 案、複 製 一 個 檔 案、剪 下 一 個 檔 案、貼 上 指 定 檔 案、進 入 這 個 檔 案 的 子 檔 案、回 到 這 個 檔 案 的 父 檔 案。
不 合 法 操 作 都 要 被 忽 略。
solve:
指 標 版 本。

定 義 一 個 node,擁 有 指 向 子 節 點 的 指 標 陣 列、指 向 父 節 點 的 指 標、尋 找 檔 案 的 函 式、創 造 檔 案 的 函 式、顯 示 子 檔 案 的 函 式。
node 其 實 不 需 要 依 據 FOLD 類 或 是 DATA 類 去 做 分 類,畢 竟 操 作 數 量 小,且 這 樣 寫 更 方 便。
顯 示 子 檔 案 有 一 個 技 巧,因 為 子 檔 案 數 量 少,所 以 可 以 根 據 字 典 序 先 排 序,在 掃 過 陣 列 兩 次,第 一 次 輸 出 FOLD 類、第 二 次 輸 出 DATA 類。

接 下 來 是 最 難 的 copy / cut + past"a",
首 先 cut 因 為 會 影 響 到 父 檔 案,所 以 必 須 使 用 兩 個 指 標,指 向 指 定 檔 案 的 父 檔 案 以 及 指 定 檔 案。
copy 則 只 需 一 個 指 標 指 向 指 定 檔 案 即 可。

past"a",需 要 額 外 一 個 變 數 去 記 錄 上 一 個 copy / cut 指 令;當 然,不 合 法 的 copy / cut 將 不 紀 錄。對 上 一 個 copy / cut 指 令 有 不 同 處 理:
首 先 是 cut,對 此 檔 案 新 增 一 個 指 標 指 向 指 定 檔 案,再 用 另 一 個 指 標 進 行 刪 除 操 作。
接 著 為 copy,僅 僅 是 新 增 一 個 指 標 指 向 同 一 個 檔 案 的 話,會 因 為 指 標 的 特 性 導 致 操 作 其 中 一 個 檔 案,另 一 個 跟 著 變 動,所 以 必 須 用 dfs 進 行 深 複 製。

code:

留言

熱門文章