算法和数据结构
ManFresh
我思故我在 & what i say what i think!
谦虚、尊重、信任
展开
-
如何找出链表中间元素
思路:让前一个指针每次走两步,后一个指针每次走一步。node*Get_middle_node(node *head){node*first = head;node*back = head; while(first!= NULL){first= first->next->next;back= back->next;}转载 2016-07-24 20:01:57 · 687 阅读 · 0 评论 -
二叉树
一、前序遍历(先根遍历),中序遍历,后序遍历编码:1、void pre_order(TreeNode * Node){if(Node != NULL){printf("%d ", Node->data);pre_order(Node->left);pre_order(Node->right);}}2、void middle_order(TreeNod原创 2016-08-31 19:43:52 · 286 阅读 · 0 评论 -
完成内存之间的拷贝
完成内存之间的拷贝原创 2016-09-18 20:08:20 · 519 阅读 · 0 评论 -
递归
https://www.zhihu.com/question/31412436在用递归的时候,当成一个黑盒子,不要老是想着递归这着方法,而是只是把递归函数当成一个普通的调用函数,对这个函数,你需要知道他的输入与输出。比如最简单的n的阶乘的递归实现,代码如下。function factorial (n) { if (n === 1) { return n; }原创 2016-08-19 19:29:10 · 328 阅读 · 0 评论 -
图
图通常是用于对真实世界问题的进行建模,这些问题使用其他数据结构来建模比较困难。表示图数据结构有很多种,通常是由实现的算法决定的。一个常见的表示方法是使用每个节点包含一个邻接表:一个引用链表,链表中的每个引用都指向一个与本节点有共同边的节点。另一个表示图的方法是邻接矩阵:一个一维数组等于节点数目的正方形矩阵,矩阵中在i,j位置的元素表示从节点i到节点j的边的数目。原创 2016-09-05 15:50:03 · 204 阅读 · 0 评论 -
数据结构堆栈和队列
数据结构堆栈和队列原创 2016-08-31 09:33:59 · 969 阅读 · 0 评论 -
一些例题的技巧
一、数字转换成单词的形式学习要点:1、用一个静态字符指针数组保存各个数字的单词,注意数组的下标刚好和对应的数字大小对应起来;2、使用递归的方法,为了看出是否是递归,可以用数学上的计算公式表示出来。当数字大于1000后和小于1000的区别。3、递归的函数要单独写,然后被主函数调用。二、质数的求解学习要点:逆向思维和正向思维。原创 2016-08-22 21:01:39 · 249 阅读 · 0 评论 -
排列与组合
1、排列void quanPaiLie(char *str){static int len;static int outLen=0;//标记输出是否已经排列完毕static int a[4]={0};//用来标记字母是否已经使用static char temp[5]={0};int i; len=strlen(str);if(outLen==len){原创 2016-09-11 21:15:03 · 261 阅读 · 0 评论 -
字符串的一些操作函数
字符串的操作函数原创 2016-07-24 20:01:21 · 232 阅读 · 0 评论 -
头指针与头结点
头指针是指链表的第一个存储元素和下一个结点地址的结点,而头结点是指存储链表信息和头指针的结点。转载 2016-08-19 10:26:13 · 666 阅读 · 0 评论 -
字符串的循环左移,不用库函数,三步循环
char*str_rev2(char *str, int bit){chartemp_str[128];inti,j;intstr_len = strlen(str);bit= bit%str_len;取余,去掉循环的左移。取出需要从低位位移到高位的字符for(i=0;i{*(temp_str+i)= *(str+i);} 将需要从高位的字符移到低位转载 2016-07-24 20:00:38 · 751 阅读 · 0 评论 -
链表:画图说明问题-
1、单向链表2、双向链表3、循环链表链表的逆序函数(相当于把链表重新创建一次,但是要注意保存好下一个指针,这是头插法)node*reverse_node(node *head){node*record, *current; if(head== NULL || head->next == NULL)returnhead; current= head->ne原创 2016-07-24 19:57:39 · 1882 阅读 · 0 评论 -
单链表(非循环)倒数第4个元素
思路:让第一个元素先走四步,然后两个游标指针一起走。node*Get_Node(node *head){inti;node*first = head;node*back = head; for(i=0;i{if(first->next== NULL)printf("Nodeless than four!\n");first= first->next;转载 2016-07-24 20:02:37 · 221 阅读 · 0 评论 -
排序
排序原创 2016-07-24 19:59:20 · 270 阅读 · 0 评论