数据结构的算法
用c语言介绍的数据结构,大多是c代码,和注释相结合。
刷帅耍帅
“没有什么使我停留/除了目的/纵然岸旁有玫瑰、有绿荫、有 宁静的港湾 /我是 不系之舟 。”
展开
-
数据结构排序算法——折半插入
/*我们前面讲到了直接插入排序。现在我们来讲二分插入排序什么是二分插入排序节?就是通过利用折半查找法来查找位置。接下来就是老套路。找到位置后。插入就好了(和直接插入一样,一边查找一边移动)好啦。我们上代码*///这里我没有给出一步一步过程,大家可以看着我给的代码,自己在纸上自己走一遍,整个过程。看看是如何移动的,这样自己才能更好的理解#include int main(原创 2016-11-24 23:05:37 · 473 阅读 · 0 评论 -
数据结构排序算法——直接插入排序
/*直接插入。算法思路就是将a[n]插入到有序数组a[0~n-1].怎么插入呢?首先就是找到要插入的位置。将该位置后的元素整体后移一个位置。以便插入。(可以从后往前一遍找位置一边移动位置)恩,就是这么简单。算是入门简单的排序吧。一会我还会讲到二分插入,和希尔排序。都是直接插入排序的升级版本。*/#include int main(void){int a[10原创 2016-11-24 23:03:32 · 568 阅读 · 0 评论 -
数据结构排序算法——堆排序
/*我们讲到了第六个排序了。就是堆排序。首先我们要清楚什么是堆。堆有大顶堆和小顶堆(这里不知道什么是大顶堆个小顶堆,不要着急。一会会说清楚的 )。我们要的是从小到大排序,所以我们要的是大顶堆。大顶堆就是。我们把一维数组看成一棵树。根节点为a[i].左右孩子分别为a[2*i]和a[2*i+1];当我们规定a>=a[2*i]同时a>=a[2*i+1]。的时候,这时候就为大顶堆。相反原创 2016-11-24 22:59:58 · 306 阅读 · 0 评论 -
数据结构直接插入排序——归并排序
/*接下来我们将一讲归并排序。还是老样子.归并的算法思路是什么?我们这里想的是递归归并排序。*/#include #include void merage(int *a,int frist,int mid ,int last,int temp[]);void meragesort(int a[],int frist,int last,int temp[]);原创 2016-11-24 22:58:09 · 294 阅读 · 0 评论 -
栈的应用4
//将中缀表达式转换为后缀表达式并计算后缀表达式//算法分析。//中缀表达式a + b*c + (d * e + f) * g,其转换成后缀表达式则为a b c * + d e * f + g * +。//转换过程需要用到栈,具体过程如下://1.如果遇到左括号我们就将其直接入栈。//2.如果遇到读取的元素为右括号的时候,我们就开始吧元素弹出到后缀表达式,(记得这时候原创 2016-11-06 11:50:02 · 284 阅读 · 0 评论 -
栈的应用2--括号匹配问题
//括号匹配问题//算法分析//1.一个字符栈来一次遍历这个字符串。//2.如果遇到右括号,直接入栈//3.如果遇到左括号找最近的括号看是否匹配。如果匹配的话,将对应的右括号出栈,继续读取下一个字符//4.读完所有的字符的时候,看是否为空栈,是空栈就匹配成功,不空栈就匹配失误#include #include #include #define MAXSIZE 1原创 2016-11-06 11:47:20 · 337 阅读 · 0 评论 -
栈的应用1——十进制转换任何进制
//十进制的转换问题#include #include #include typedef struct List{char date;struct List *next;}NODE,*LNode;typedef struct{LNode top;int date;//计数器用来计数}Stack,*SeqStack;SeqStack init_原创 2016-11-06 11:45:16 · 602 阅读 · 0 评论 -
链表的基本算法
#include #include #include typedef struct List{int date;struct List *next;}NODE,*Node;Node headcreate_List();//头插法 Node tailcreate_List();//尾插法void traverse_List(Node);//遍历Node原创 2016-10-23 22:04:33 · 401 阅读 · 0 评论 -
C语言单链表的基本操作
#include typedef struct List{int date;struct List *next;}NODE,*Node;Node create_List(); void traverse_List(Node);void insert_List(Node,int, int );void delete_List(Node ,int ,int*);原创 2016-10-23 21:57:16 · 472 阅读 · 0 评论 -
链表 单循环链表 约瑟夫环
#include #include #include typedef struct List{int date;struct List *next;}NODE,*Node;Node create_List(int );void traverse_List(Node);//void Joseph(Head,m,n,k);int main(void){原创 2016-10-23 21:59:37 · 563 阅读 · 0 评论