C语言
C语言基础
三明治手抓饼
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
2020-10-31
二叉树 二叉树的绝大多数操作都可以采用递归的方法来实现 方块类型的变量代表一整颗树,圆圈类型的变量只代表一个节点 有序二叉树: 任何一个树的左子树上都比他的节点的数小,右子树比节点的数大,则为有序二叉树 树的遍历: 依次处理树的每一个节点,需要通过递归来实现 树的遍历一定是先遍历左子树然后遍历右子树 根节点的处理顺序: 在处理子树之前处理根节点, 前序遍历 在两个子树之间处理根节点,中序遍历 处理两个子树之后处理根节点,后续遍历 头文件 #ifndef __TREE__H #define __TREE原创 2020-10-31 20:53:06 · 122 阅读 · 0 评论 -
2020-10-31
双向链表 正向和反向遍历 双向链表 增加正向和反向的遍历 需要注意的是,由于遍历的过程是一个指针记录了当前节点的位置,因此在遍历过程中,不允许有改变链表结构的操作(比如增加,删除,插入节点) 头文件 #ifndef __03_LINK__H #define __03_LINK__H typedef struct node { int val; struct node * p_next; struct node * p_prev; } node_t; typedef struct { node_原创 2020-10-31 00:08:23 · 146 阅读 · 0 评论 -
2020-10-25
顺序链表的构建: 只能从链表头向链表尾部存储和遍历 头文件: #ifndef __03_LINK__H #define __03_LINK__H typedef struct node { int val; struct node * p_next; } node_t; typedef struct { node_t head; node_t tail; } link_t; void link_init(link_t * p_link); void link_deinit(link_t *p_l原创 2020-10-25 22:18:37 · 109 阅读 · 0 评论 -
2020-10-24
循环队列更加的合理,节省内存和空间 为了能够在一定空间内完成循环队列,需要记录队列尾部的位置以及队列中成员数量,根据这两个可以计算出头的位置,从而完成循环队列。 02_queue.h #ifndef _02_QUEUE__ #define _02_QUEUE__ typedef struct { int buf[SIZE]; int tail; // last number + 1 int qty; // queue number } queue_t; void queue_init(原创 2020-10-24 13:05:40 · 110 阅读 · 0 评论 -
2020-10-24
实现单向链表的操作 头文件 queue.h #ifndef __QUEUE_H__ #define __QUEUE_H__ typedef struct { int buf[SIZE]; int head; // remember first data int tail; // remember last data } queue_t; void queue_init(queue_t * ); void queue_deinit(queue_t *); int queue_size(con原创 2020-10-24 11:04:34 · 108 阅读 · 0 评论 -
2020-10-22
栈的编写 其实是一个数组+ 记录栈空间元素个数的qty 栈的头文件stack.h #ifndef __STACK_H_ #define __STACK_H_ #include<stdio.h> typedef struct { int buf[SIZE]; int qty; } stack_t; void stack_init(stack_t * ); void stack_deinit(stack_t *); int stack_size (const stack_t *);原创 2020-10-22 22:19:19 · 121 阅读 · 0 评论 -
2020-10-18
初始化一个空链表,并且动态的插入数据 #include<stdio.h> #include <stdlib.h> typedef struct node { int val ; struct node * p_next; } node_t; int main() { int val = 0; node_t head = {0},tail = {0}; node_t * p_node = NULL, *p_first = NULL, *p_mid = NULL, *p原创 2020-10-18 13:17:19 · 123 阅读 · 0 评论 -
2020-10-17
C语言中 链表的 增加一个节点和删除一个节点 #include<stdio.h> typedef struct node { int val; struct node * p_next; } node_t; int main() { node_t node1 ={10},node2 ={20},node3={30} ,head = {0}, tail = {0}; head.p_next = &node1; node1.p_next = &node2; node2.原创 2020-10-17 23:01:38 · 109 阅读 · 0 评论 -
2020-10-17
最简单的链表 #include<stdio.h> typedef struct node { int val; struct node * p_next; // 下一个节点依然是一个 node 类型的节点 } node_t; int main() { node_t node1 ={10},node2 ={20},node3={30}; node1.p_next = &node2; node2.p_next = &node3; return 0; } ...原创 2020-10-17 14:58:14 · 111 阅读 · 0 评论 -
2020-10-17
如何在应用层简单的实现cp 命令 #include<stdio.h> int main(int argc, char ** argv) { char temp[100]= {0}; int size_read = 0, size_write = 0; if (argc != 3) { printf("err argc input \n"); return 0; } FILE *p_des = NULL, *p_src = NULL; p_src = fopen(argv[1原创 2020-10-17 10:52:16 · 109 阅读 · 0 评论 -
2020-10-14
C语言文件操作2 将一个二维数组写入文件中 #include<stdio.h> int main() { int arr [][5] = { 1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3, 4,4,4,4,4, 5,5,5,5,5}; int size = 0; FILE *p_file = fopen("a.bin","wb"); if (p_file) { size = fwrite(arr,sizeof(int),25,p_fi原创 2020-10-14 23:03:21 · 218 阅读 · 1 评论 -
2020-10-14
将数据二进制写入文件中 #include<stdio.h> int main() { int arr[] = {1,2,3,4,5}; FILE *p_file = fopen("a.bin","wb"); if(p_file) { fwrite(arr, sizeof(int),5,p_file); fclose(p_file); p_file = NULL; } return 0; }原创 2020-10-14 23:00:25 · 123 阅读 · 0 评论
分享