链表的一个简单应用---目录下的文件并排序
2015-01-13 22:05
471 查看
</pre><pre name="code" class="html">/* 2015-1-13 [watchmen 数据结构和算法 01-链表和数组] ** 链表的一个简单应用,读取目录下的文件及子文件名并排序 ** (a) 不知道这个目录下有多少个子文件和目录 ** (b) 读取目录下的子目录条目.opendir 打开目录 readdir 从目录中读取一个文件项, 读取的顺序不是排列好的 ** 选择链表来存储是不错的选择. 动态的增加节点数, 在中途中添加新的节点. 链表方便操作 */ #include <stdio.h> #include <stdlib.h> #include <assert.h> #include <dirent.h> #include <string.h> typedef struct list { char *name; struct list *next; }linknode, *linklist; linklist insert_local(linklist head, linklist newnode) { assert(newnode); linklist temp = head; if(temp == NULL) {//空链表 head = newnode; return head; } if(strcmp(temp->name,newnode->name) > 0) {//插入head处 newnode->next = temp; head = newnode; return head; } linklist prev = head; temp = head->next; while(temp != NULL) {//不断循环查找应该放入的位置 if(strcmp(newnode->name,temp->name) > 0) { prev = temp; temp = temp->next; } else break; } //将新的节点放入进去 newnode->next = temp; prev->next = newnode; return head; } void output(linklist head) {//链表输出 linklist temp = head; while(temp) { printf("%s ",temp->name); temp = temp->next; } printf("\n"); } int main(int argc, char *argv[]) { if(argc != 2) { printf("pls usage %s dir_name\n",argv[0]); exit(EXIT_FAILURE); } linklist head = NULL; DIR* dir = opendir(argv[1]); struct dirent *dp = NULL; while( (dp = readdir(dir)) != NULL) { if(dp->d_name[0] == '.') continue; linklist newnode = malloc(sizeof(linknode)); newnode->next = NULL; int len = strlen(dp->d_name) + 1; newnode->name = malloc(len); //为新节点申请空间 memset(newnode->name,'\0',len);//初始化 查看memset的用法 strncpy(newnode->name,dp->d_name,len - 1); head = insert_local(head,newnode); output(head); //getchar(); } output(head); return 0; }
相关文章推荐
- 一个简单地应用--从客户端向服务器发送数据.post,get.httpclientget,httpclinetpost,文件上传.
- 双向链表小练习-》拿单向链表改的,其中增加了一个链表排序的小应用
- 实现一个简单的c++ list容器(含sort排序 链表归并算法实现)
- 一个简单的创建ndk文件目录结构来编译源文件的框架的小脚本
- 也发一个自己实现的android简单文件选择器代码。支持多卡,排序
- 一个简单的文件目录打印程序
- 第四周【项目3.2-单链表应用(多文件)把一个链表接到另一个后面】
- 一个简单的统计文件夹下文件或目录的程序
- 循环双链表加目录IO实现简单的文件检索
- 分享一个查看Hdfs目录下文件大小的脚本,支持排序
- Java编程的逻辑 (60) - 随机读写文件及其应用 - 实现一个简单的KV数据库
- 关于Go的一个文件目录共享应用实例
- 原来将一个文件复制到指定目录下如此简单
- Java编程的逻辑 (61) - 内存映射文件及其应用 - 实现一个简单的消息队列
- 简单的IO流应用-将文件夹中的所有文件拷贝到指定目录下
- 用极少的MXML来通过AS文件完成一个简单的应用!
- 简单了解Java本身是怎样判断一个文件是目录
- Symbian OS应用开发--文件和目录
- 一个可应用在ASP 标记加密文件的MD5的DLL组件 {81K}
- 删去一个目录下的所有文件,而保留目录结构