目錄樹 (30 分)

2021-08-28 19:04:05 字數 1344 閱讀 2441

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

輸入首先給出正整數n(≤10​4​​),表示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

主要思路就是對樹的節點的遍歷,以及處理好各節點的關係不要搞亂了,還有就是有乙個坑點,這個』c\『雖然輸出是』c』,但是它是排在『b』前面的,也就是說可以把它當成目錄處理,只不過裡面沒有檔案。

#include

using

namespace std;

struct file

;struct node

;int

nodecmp

(node* a,node* b)

//目錄字典序排序

intfilecmp

(file* a,file* b)

//檔案字典序排序

void

planttree

(node* p,

char

*s)}

if(f==0)

if(pos<

strlen

(s)-1)

planttree

(a,s+pos+1)

;//如果之後還有字串,繼續呼叫自身函式

else

return;}

else

}void

printtree

(node* p,

int n)

return;}

intmain()

printtree

(root,0)

;return0;

}

5 30 目錄樹 30分

在zip歸檔檔案中,保留著所有壓縮檔案和目錄的相對路徑和名稱。當使用winzip等gui軟體開啟zip歸檔檔案時,可以從這些資訊中重建目錄的樹狀結構。請編寫程式實現目錄的樹狀結構的重建工作。輸入格式說明 輸入首先給出正整數n 104 表示zip歸檔檔案中的檔案和目錄的數量。隨後n行,每行有如下格式的...

7 9 目錄樹 (30 分)

7 9 目錄樹 30 分 在zip歸檔檔案中,保留著所有壓縮檔案和目錄的相對路徑和名稱。當使用winzip等gui軟體開啟zip歸檔檔案時,可以從這些資訊中重建目錄的樹狀結構。請編寫程式實現目錄的樹狀結構的重建工作。輸入首先給出正整數n 10 4 表示zip歸檔檔案中的檔案和目錄的數量。隨後n行,每...

PTA 目錄樹 (30 分)

7 14 目錄樹 30 分 在zip歸檔檔案中,保留著所有壓縮檔案和目錄的相對路徑和名稱。當使用winzip等gui軟體開啟zip歸檔檔案時,可以從這些資訊中重建目錄的樹狀結構。請編寫程式實現目錄的樹狀結構的重建工作。輸入格式 輸入首先給出正整數n 10 4 表示zip歸檔檔案中的檔案和目錄的數量。...