目錄樹的建立和輸出

2021-07-04 10:44:45 字數 1554 閱讀 6875

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

輸入格式說明:

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

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

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

3) 目錄以符號「\」結束;

4) 不存在重複的輸入專案;

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

輸出格式說明:

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

樣例輸入與輸出:序號

輸入輸出

1

7bc\

ab\cd

a\bc

ab\d

a\d\a

a\d\z\

root

a dza

bcabcdd

c b

2

1

z\

root

z

1、首先建立目錄樹。將輸入的每個字串插入到已有的目錄樹中,插入時將字串的字首與目錄樹的結點一層一層往下匹配,失配時建立新的目錄和檔案。

2、後序遍歷目錄樹,對每個結點的子目錄和子檔案進行排序。

3、先序遍歷進行輸出。

/*2015.8.9cyq*/

#include #include #include #include #include using namespace std;

//ifstream fin("case1.txt");

//#define cin fin

struct tnode

};//尋找s中第乙個'\'的位置並對s進行擷取得到後段,前段用shead返回

//函式返回第乙個'\'的位置,若找不到返回-1

int findpos(string &s,string &shead)

} //匹配不到

if(i==root->next.size())

}bool cmp(const tnode *a,const tnode *b)

return false;

}void postorder(tnode *&root)

}void dfs(tnode *&root,int &blank)

int main()

postorder(root);//後序遍歷對每個結點的子目錄和子檔案進行排序

int blank=0;

dfs(root,blank);//先序遍歷輸出結果

return 0;

}

建立和刪除目錄

建立和刪除目錄 建立目錄 mkdir 使用格式為 mkdir options parameter 它有一些選項 p 建立乙個目錄,如果目錄所在的路徑不存在,連同路徑一起建立 v 顯示詳細資訊 m 建立目錄的同時直接指定許可權 刪除目錄 rmdir rmdir只能刪除空目錄 使用格式 rmdir op...

python字典的建立和輸出 字典的建立和使用

直接建立 d 輸出結果 dict函式 通過序列對建立字典 vaulues name daniel age 23 1 print dict values 通過關鍵字建立字典 print dict name daniel age 23,1 如果 dict 不傳入任何引數將會返回乙個空字典 print d...

VC 字型建立和輸出

cfont font font.createpointfont 100,華文行楷 null cfont poldfont dc.selectobject font textmetric tm dc.gettextmetrics tm if 0x0d nchar else if 0x08 nchar ...