zoukankan      html  css  js  c++  java
  • 链表

    文件系统

     HDU - 1413 

    题意:中文题,简单模拟一下文件系统。

    orz链表都写不溜啊。。。

    http://blog.csdn.net/liang5630/article/details/12419861?locationNum=7&fps=1

      1 #include <iostream>
      2 #include <cstdio>
      3 #include <cstring>
      4 using namespace std;
      5 
      6 struct Dir{
      7     char name[25];
      8     char filename[1005][25];
      9     Dir *nex[1005];
     10     Dir *fa;
     11     int sum;
     12     int filesum;
     13 }*p;
     14 char note[6][50]={"success","no such directory","directory already exist",
     15                     "can not delete the directory","file already exist","no such file"};
     16 
     17 //CD  Md RD CREAT DELETE
     18 
     19 int main(){
     20     char op[15],name[25];
     21     int flag;
     22     p=new Dir;
     23     Dir *rt=p;
     24     strcpy(rt->name,"\");
     25     rt->sum=rt->filesum=0;
     26     rt->fa=p;
     27     while(scanf("%s%s",op,name)!=EOF){
     28         if(strcmp(op,"CD")==0){
     29             flag=1;
     30             if(p->sum>0){
     31                 for(int i=0;i<p->sum;i++){
     32                     if(strcmp(p->nex[i]->name,name)==0){  //找到了,进入下一级
     33                         flag=0;
     34                         p=p->nex[i];
     35                         break;
     36                     }
     37                 }
     38             }
     39             if(strcmp(name,"..")==0){
     40                 p=p->fa;
     41                 flag=0;
     42             }
     43             if(strcmp(name,"\")==0){
     44                 p=rt;
     45                 flag=0;
     46             }
     47             printf("%s
    ",note[flag]);
     48         }
     49         else if(strcmp(op,"MD")==0){
     50             flag=0;
     51             if(p->sum>0){
     52                 for(int i=0;i<p->sum;i++){
     53                     if(strcmp(p->nex[i]->name,name)==0){
     54                         flag=2;
     55                         break;
     56                     }
     57                 }
     58             }
     59             if(strcmp(name,"..")==0||strcmp(name,"\")==0){  //不允许创建..和子目录
     60                 flag=2;
     61             }
     62             printf("%s
    ",note[flag]);
     63             if(flag==0){  //创建子目录成功 ,更新当前目录所包含的文件夹
     64                 Dir *temp=new Dir;
     65                 strcpy(temp->name,name);
     66                 temp->sum=temp->filesum=0;
     67                 temp->fa=p;
     68                 p->nex[p->sum]=temp;
     69                 (p->sum)++;
     70             }
     71         }else if(strcmp(op,"RD")==0){
     72             flag=0;
     73             int i;
     74             if(p->sum>0){
     75                 for(i=0;i<p->sum;i++){
     76                     if(strcmp(p->nex[i]->name,name)==0){
     77                         if(p->nex[i]->sum||p->nex[i]->filesum){  //不是空的
     78                             flag=3;
     79                             break;
     80                         }
     81                         else break;
     82                     }
     83                 }
     84                 if(i==p->sum) flag=3; //没有找到这个文件夹
     85             }else flag=3;  //没有文件夹
     86             printf("%s
    ",note[flag]);
     87             if(flag==0){
     88                 for(;i<(p->sum)-1;i++) p->nex[i]=p->nex[i+1];
     89                 (p->sum)--;
     90             }
     91         }else if(strcmp(op,"CREATE")==0){
     92             flag=0;
     93             int i;
     94             if(p->filesum>0){
     95                 for(i=0;i<p->filesum;i++){
     96                     if(strcmp(p->filename[i],name)==0){
     97                         flag=4;break;
     98                     }
     99                 }
    100             }
    101             printf("%s
    ",note[flag]);
    102             if(flag==0){
    103                 strcpy(p->filename[p->filesum],name);
    104                 (p->filesum)++;
    105             }
    106         }else {
    107             flag=5;
    108             int i;
    109             if(p->filesum>0){
    110                 for(i=0;i<p->filesum;i++){
    111                     if(strcmp(p->filename[i],name)==0){
    112                         flag=0;
    113                         break;
    114                     }
    115                 }
    116             }
    117             printf("%s
    ",note[flag]);
    118             if(flag==0){
    119                 for(;i<(p->filesum-1);i++) strcpy(p->filename[i],p->filename[i+1]);
    120                 (p->filesum)--;
    121             }
    122         }
    123     }
    124     return 0;
    125 }
    View Code
  • 相关阅读:
    go语言基础学习
    VBA汇总同目录下的所有工作簿数据到另一个工作簿,并进行统计
    彻底关闭win10后台同步数据(转自技术社区)
    在WIN10上安装ESXI-Comstomer (转自技术社区)
    squid代理允许FTP访问设置
    Powershell 脚本判断制定路径下文件是否存在(来源于网络-转载)
    Python集合(set)类型的操作 (转)
    python3.5.2中文字符乱码问题解决
    Debian 中文环境设置
    Python 列表推导实例
  • 原文地址:https://www.cnblogs.com/yijiull/p/7306341.html
Copyright © 2011-2022 走看看