在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\
roota dza
bcabcdd
c b
2
1z\
rootz
/*
建立目錄樹 和 輸出 結果均用到了遞迴的思想
特別要注意資料結構的定義 和 函式引數 這裡容易犯錯誤
*/#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define n 10001
int n;
typedef
struct node
}node;
//node* newnode(bool ismulu,string name1)
//// return nt;
//}node* root;
node* createtree(node* root,string s)
flag = true;
break;}}
if (flag == false)
root->nextji.push_back(newt);}}
else
}if (flag == false)}}
return root;
}bool cmp(node* n1, node* n2)
void show(node* root,int num)
}int main()
show(root, 0);
//printf("\n");
}return
0;}
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace
std;
#define n 1001
typedef
struct node
}fnode;
int n ;
fnode* createtree(fnode* root , string s)
}if(flag == false)
}else
}if(flag == false)
}}bool cmp(fnode* f1 , fnode* f2)
void pf(fnode* root , int ceng)
}int main()
pf(root,0);
return
0 ;}
目錄樹 (30 分)
在zip歸檔檔案中,保留著所有壓縮檔案和目錄的相對路徑和名稱。當使用winzip等gui軟體開啟zip歸檔檔案時,可以從這些資訊中重建目錄的樹狀結構。請編寫程式實現目錄的樹狀結構的重建工作。輸入首先給出正整數n 10 4 表示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歸檔檔案中的檔案和目錄的數量。...