BUPT OJ91 文件系统
来源:互联网 发布:管家婆软件创业板 编辑:程序博客网 时间:2024/05/30 23:47
题目描述
现在很多操作系统的文件系统都是基于树形结构设计的。即一个目录下可以有若干个目录和文件,而每个目录和文件都可以通过一条从根目录出发的唯一路径来唯一确定。我们希望你实现对这样的一个文件系统的简单管理。
为了简化问题,我们做出如下假设:
假设文件系统初始时只有一个根目录root。
假设所有出现的文件和目录的名字都是唯一的。即,不会有两个相同名字的文件出现,不会有两个相同名字的目录出现,也不会有一个文件和一个目录名字相同。
文件名字和目录名字都是长度在1到20之间的字符串(包括1和20),且只由英文大写字母、英文小写字母、数字组成。大小写字母之间不等效。
你需要实现如下操作:
CREATEFILE FILENAME DIRNAME
这个操作的含义是:在DIRNAME的目录下创建一个名字为FILENAME的文件。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录,而FILENAME这个名字是首次出现。
CREATEDIR DIRNAME1 DIRNAME2 这个操作的含义是:在DIRNAME2的目录下创建一个名字为DIRNAME1的目录。我们保证当出现这个操作时,DIRNAME2是一个已经存在的目录,而DIRNAME1这个名字是首次出现。
LISTFILE DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME目录下的所有文件名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录.
LISTDIR DIRNAME 这个操作的含义是:按照创建的先后顺序打印出DIRNAME目录下的所有目录名字。我们保证当出现这个操作时,DIRNAME是一个已经存在的目录
输入格式
第一行有一个整数
对于每组数据,第一行有一个整数
输出格式
对于每个LISTFILE操作和LISTDIR操作,如果找到了
输入样例
28CREATEFILE desktop rootCREATEDIR DESKTOP rootLISTFILE rootLISTDIR DESKTOPCREATEFILE scr20130412 DESKTOPCREATEFILE scr20130411 DESKTOPCREATEFILE scr20130413 DESKTOPLISTFILE DESKTOP5LISTFILE rootCREATEDIR webapp rootCREATEDIR myweb webappCREATEDIR MyWeb webappLISTDIR webapp
输出样例
desktopscr20130412scr20130411scr20130413mywebMyWeb
数据小的结果就是各种无脑暴力,简直不能看啊233
/*USER_ID: test#birdstormPROBLEM: 91SUBMISSION_TIME: 2014-03-01 16:41:29*/#include <stdio.h>#include <stdlib.h>#include <ctype.h>#include <string.h>#define For(i,m,n) for(i=m;i<n;i++)#define MAXN 105 typedef struct Node{ int num; char father[30], name[30], file[MAXN][30];}Node; Node dir[111]; main(){ char father[30], child[30], temp[30]; int i, j, n, t, m, k; strcpy(dir[0].name,"root"); scanf("%d",&t); while(t--){ k=1; For(i,0,MAXN) dir[i].num=0; scanf("%d",&n); For(i,1,n+1) { scanf("%s",temp); if(!strcmp(temp,"CREATEFILE")) { scanf("%s%s",child,father); For(j,0,k) if(!strcmp(father,dir[j].name)) strcpy(dir[j].file[dir[j].num++],child); } else if(!strcmp(temp,"CREATEDIR")) { scanf("%s%s",child,father); For(j,0,k) if(!strcmp(father,dir[j].name)) { strcpy(dir[k].name,child); strcpy(dir[k].father,father); k++; //break; } } else if(!strcmp(temp,"LISTFILE")) { scanf("%s",father); For(j,0,k) if(!strcmp(father,dir[j].name)) For(m,0,dir[j].num) puts(dir[j].file[m]); } else if(!strcmp(temp,"LISTDIR")) { scanf("%s",father); For(j,0,k) if(!strcmp(father,dir[j].father)) puts(dir[j].name); } } } return 0;}
- BUPT OJ91 文件系统
- BUPT OJ 文件系统
- 北邮新OJ91
- bupt
- 91. 文件系统 code.bupt.edu.cn 题干问题
- [南阳理工OJ91]阶乘之和
- 阶乘之和(南阳oj91)(水题)
- bupt(topsort)
- BUPT 257
- BUPT Strings calculate
- Bupt ACM题解 NO1
- Bupt ACM题解 NO2
- bupt 201 树状数组
- BUPT 201 Glorious Array
- BUPT 202 Chocolate Machine
- BUPT 203 Palindrome
- bupt 204 Palindrome
- BUPT 202 chocolate mashine
- 处理焦点项目2
- 制作CAB文件
- 探索 FileSystem API
- 由360手机卫士谈起——让你的service获取最高权限。
- 游戏抽奖活动中下限保底的简单实现
- BUPT OJ91 文件系统
- vim和系统剪贴板的交互
- 使用PostThreadMessage向工作线程发送消息
- LeetCode 144 — Binary Tree Preorder Traversal(C++ Java Python)
- Linux上安装memcached
- linux标准学习之-LSB(下)
- 用户态的信号量
- CMakeList文件编写
- 构建嵌入式系统交叉内核源码树