第一次寫樹的資料結構,可能還存在一些小bug
首先是建立樹:每個節點包含了第乙個孩子和他的兄弟姐妹
typedef char * treeelement;
typedef struct treenode * ptrtonode;
typedef ptrtonode tree;
struct treenode ;
首先建立的是root節點,然後建立第乙個孩子和兄弟姐妹
在決定插入孩子還是兄弟姐妹時,需要優先確認父節點addresstoptr就是用來確定父節點的
static tree createroottree()
tree->element = (treeelement)malloc(sizeof(sizeof(char)*100));
if(tree->element == null)
strcpy(tree->element, "usr");
tree->firstchild = null;
tree->nextsibling = null;
return tree;
}static ptrtonode addresstoptr(char * address, tree tree)
// 找到樹的源頭
char *next = strchr(end+1,'/');
char temp_file[100];
if(next!=null)
temp_file[index]='\0';
}else
//printf("temp_file is %s\n", temp_file);
if(tree->firstchild)
while(child->nextsibling)
} if(child)else
}else
}static void insert(char * address, char *filename, tree tree)
newnode->firstchild =null;
newnode->nextsibling = null;
newnode->element = (treeelement)malloc(sizeof(char)*100);
if(newnode->element==null)
strcpy(newnode->element, filename);
ptrtonode child = ptrtonode->firstchild;
if(child==null)else
child->nextsibling = newnode;
}}
呼叫如下:
tree tree=createroottree();
insert("/usr", "aaa", tree);
insert("/usr", "bbb", tree);
insert("/usr", "ccc", tree);
insert("/usr", "ddd", tree);
insert("/usr", "eee", tree);
insert("/usr/eee", "wanger", tree);
insert("/usr/bbb", "zhangsan", tree);
insert("/usr/bbb/zhangsan", "lisi", tree);
insert("/usr/bbb/zhangsan/lisi", "lisi1", tree);
insert("/usr/ccc", "lisi", tree);
下面是列印樹
static void printtree(tree tree, int index)
printf("%s\n", tree->element); }}
static void listdirtree(tree tree, int index)
}
迴圈中使用遞迴可將乙個樹列印出來
由此可見,定義樹的一種自然的方法就是遞迴
Linux磁碟 Ext檔案系統 目錄樹
硬碟,拆過機的同志應該知道就是一塊小剛體嘛。拆過主機硬碟和筆記本硬碟也應該知道不同的硬碟的介面是不一樣的,主機的硬碟一般會有一條線連線到主機板而筆記本的硬碟直接有插槽。這個概念只是為了引起硬碟有不同的種類存在,當我們在linux系統中輸出命令fdisk l的時候,大致會有裝置名稱等資訊。其中有可能有...
系統的目錄結構 檔案系統
linux檔案儲存時,都是以根目錄 開始的 可執行程式或命令 boot 核心與系統啟動有關的檔案 home 所有普通使用者的家目錄 etc 系統配置檔案 lib 庫檔案 proc 虛擬目錄,程序在記憶體中的映像 usr 系統執行過程中不常改變的檔案 var 系統執行過程中常改變的檔案 root 管理...
在Python中列出目錄中的所有檔案
怎麼樣用python列出乙個目錄的所有檔案並且存進乙個列表?os.listdir 可以獲得乙個目錄中所有檔案或者子目錄.如果你只想要檔案的話,你也可以用os.path把其他的過濾掉 from os import listdir from os.path import isfile,join only...