链表的一个简单应用---目录下的文件并排序
来源:互联网 发布:詹姆斯社交软件头像 编辑:程序博客网 时间:2024/06/06 17:47
</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;}elsebreak;}//将新的节点放入进去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;}
0 0
- 链表的一个简单应用---目录下的文件并排序
- hive创建一个表,并挂载hdfs目录下的一个分布式文件到表中
- 链表应用——按字母顺序存储并输出某目录下的子文件或子目录名
- Linux下获取目录下的文件列表,并按字符串排序
- 统计指定目录下,指定文件后缀的文件代码行数,并排序
- golang遍历某个目录下的文件,并读取文件名到一个csv文件
- python ( os , path , sys ) 找出指定目录下的所有文件,并求出大小且排序
- 一个简单的文件目录打印程序
- android下载文件到应用的文件目录并安装
- 超简单--目录下的文件打包
- 用 javac 编译一个目录下的所有 java文件并打包成jar 包
- 一个简单的makefile的实现,编译当前目录下所有的.c文件
- 删除一个目录下的文件
- 获取一个目录下的所有文件
- 查找一个目录下的所有文件
- 遍历一个目录下的所有文件
- 获取一个目录下的文件信息
- 一个目录下的文件更改扩展名
- Geometry 对象浅析
- [leetcode 54] Spiral Matrix
- Linux下的IPv6地址、路由以及隧道配置
- FileWriter不覆盖
- 导入Android项目异常
- 链表的一个简单应用---目录下的文件并排序
- 受滚动和缩放等操作影响主线程无法阻塞
- hadoop实实的体验--hello -wordcount
- Android很有用的代码片段
- OC手动内存管理-临时对象与事件循环中的自动释放池
- 区域锁(Scoped locking)
- web service 异常
- 【代码篇】JBPM4.4开发流程节点(动态代理实现流程管理业务)
- OC之NSPredicate(谓词)学习