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