PTA目錄樹c 版 山東科技大學

2021-10-25 07:22:41 字數 1792 閱讀 8777

題目:

在zip歸檔檔案中,保留著所有壓縮檔案和目錄的相對路徑和名稱。當使用winzip等gui軟體開啟zip歸檔檔案時,可以從這些資訊中重建目錄的樹狀結構。請編寫程式實現目錄的樹狀結構的重建工作。

輸入格式:

輸入首先給出正整數n(≤1e4​​),表示zip歸檔檔案中的檔案和目錄的數量。隨後n行,每行有如下格式的檔案或目錄的相對路徑和名稱(每行不超過260個字元):

路徑和名稱中的字元僅包括英文本母(區分大小寫);

符號「\」僅作為路徑分隔符出現;

目錄以符號「\」結束;

不存在重複的輸入專案;

整個輸入大小不超過2mb。

輸出格式:

假設所有的路徑都相對於root目錄。從root目錄開始,在輸出時每個目錄首先輸出自己的名字,然後以字典序輸出所有子目錄,然後以字典序輸出所有檔案。注意,在輸出時,應根據目錄的相對關係使用空格進行縮排,每級目錄或檔案比上一級多縮排2個空格。

輸入樣例:

7bc\

ab\cd

a\bc

ab\d

a\d\a

a\d\z\

輸出樣例:

root

a dza

bcabcdd

c b

**搬運工就是我了,記下來當模板

//

#include

using

namespace std;

typedef

struct csnode

csnode,

* cstree;

cstree insertnode

(cstree t,string s,

int flag)

ptr=t-

>firstchild;

//由於根結點本身插入時,是插在長子位,因此另外設定 pre 當前驅結點,ptr 當 pre 的後繼,比較好寫

while

(ptr !=

null&&(

(ptr-

>flag>node-

>flag)

||(ptr-

>flag==node-

>flag&&s>ptr-

>data)))

//要先判空,不然有段錯誤

if(ptr==

null

)//無處可插入,插在鏈尾

else

if(ptr-

>data==node-

>data&&ptr-

>flag==node-

>flag)

//目錄或檔案已存在

else

else

//正常插入

return node;}}

void

creattree

(cstree pre,string s)}if

(indexlength()

) pre=

insertnode

(pre,s.

substr

(index,s.

length()

-index),0

);}void

print

(cstree t,

int space)

intmain()

PTA關鍵活動c 版 山東科技大學

題目 假定乙個工程專案由一組子任務構成,子任務之間有的可以並行執行,有的必須在完成了其它一些子任務後才能執行。任務排程 包括一組子任務 以及每個子任務可以執行所依賴的子任務集。比如完成乙個專業的所有課程學習和畢業設計可以看成乙個本科生要完成的一項工程,各門課程可以看成是子任務。有些課程可以同時開設,...

PTA旅遊規劃c 版 山東科技大學

題目 有了一張自駕旅遊路線圖,你會知道城市間的高速公路長度 以及該公路要收取的過路費。現在需要你寫乙個程式,幫助前來諮詢的遊客找一條出發地和目的地之間的最短路徑。如果有若干條路徑都是最短的,那麼需要輸出最便宜的一條路徑。輸入格式 輸入說明 輸入資料的第1行給出4個正整數n m s d,其中n 2 n...

PTA排名彙總c 版 山東科技大學

題目 輸入的第一行給出乙個正整數n 100 代表考點總數。隨後給出n個考點的成績,格式為 首先一行給出正整數k 300 代表該考點的考生總數 隨後k行,每行給出1個考生的資訊,包括考號 由13位整數字組成 和得分 為 0,100 區間內的整數 中間用空格分隔。輸出格式 首先在第一行裡輸出考生總數。隨...