码迷,mamicode.com
首页 > 其他好文 > 详细

7-30 目录树

时间:2018-03-03 23:26:59      阅读:297      评论:0      收藏:0      [点我收藏+]

标签:else   child   工作   大小写   etc   style   clu   sub   stdio.h   

7-30 目录树(30 分)

在ZIP归档文件中,保留着所有压缩文件和目录的相对路径和名称。当使用WinZIP等GUI软件打开ZIP归档文件时,可以从这些信息中重建目录的树状结构。请编写程序实现目录的树状结构的重建工作。

输入格式:

输入首先给出正整数N(10?4??),表示ZIP归档文件中的文件和目录的数量。随后N行,每行有如下格式的文件或目录的相对路径和名称(每行不超过260个字符):

  • 路径和名称中的字符仅包括英文字母(区分大小写);
  • 符号“\”仅作为路径分隔符出现;
  • 目录以符号“\”结束;
  • 不存在重复的输入项目;
  • 整个输入大小不超过2MB。

输出格式:

假设所有的路径都相对于root目录。从root目录开始,在输出时每个目录首先输出自己的名字,然后以字典序输出所有子目录,然后以字典序输出所有文件。注意,在输出时,应根据目录的相对关系使用空格进行缩进,每级目录或文件比上一级多缩进2个空格。

输入样例:

7
b
cab\cd
a\bc
ab\d
a\d\a
a\d\z

输出样例:

root
  a
    d
      z
      a
    bc
  ab
    cd
    d
  c
  b

思路:记得数据结构课的时候确实讲过数的创建,但是一直没有自己动手实现过,今个儿这个要点时间。首先学了下字符串按照指定符号分割,然后百度了下输的创建,所以先待续~
#include<stdio.h>
#include<string>
#include<queue>
#include<sstream>
#include<algorithm>
#include<iostream>
using namespace std;
typedef struct treenode{
    char name[260];
    struct treenode *firstchild;            //第一个儿子
    struct treenode *nextsibling;        //下一个兄弟
}Treenode, *Treep;
int main()
{
    int n; cin >> n;
    Treep tree = new Treenode;
    strcpy(tree->name , "root");
    tree->firstchild = NULL;
    tree->nextsibling = NULL;

    char s[260];
    const char *sep = "\\";        //按\分割的字符
    char *p;
    
    while (n--){
        getchar(); gets(s);
        p = strtok(s, sep);
        Treep temp = tree;
    
        while (temp)
        {
            if (strcmp(temp->name, p))
                temp = temp->firstchild;
            else temp = temp->nextsibling;
        }
        temp = new Treenode;
        strcpy(temp->name, p);
        temp->firstchild = NULL;
        temp->nextsibling = NULL;

        while (p){
            //printf("%s\n", p);
            Treep cnt = new Treenode;
            strcpy(cnt->name, p);

            
            p = strtok(NULL, sep);
        }
    
        
    }
    return 0;
}

 



7-30 目录树

标签:else   child   工作   大小写   etc   style   clu   sub   stdio.h   

原文地址:https://www.cnblogs.com/zengguoqiang/p/8503241.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!