数据结构与算法
上漂的雪
这个作者很懒,什么都没留下…
展开
-
c语言链表操作
// //之前学了数据结构,写了一些程序.久了不去应用,竟然忘记了链表是怎么操作的.今天重新翻了一下书,将链表的操作的程序贴出来,记忆一下,共享一下. //本程序实现一般单链表的创建,插入,查找,删除,打印。为了显示,均需要从键盘写入和显示在屏幕上 #include #include typedef struct NODE { int data;原创 2013-07-27 11:11:52 · 572 阅读 · 0 评论 -
记录一些算法(以后会不断添加)
1)二分法计算幂运算X^N 如果N是偶数,我们有 X^N = X^2/N * X^2/N.如果N是奇数则X^N = X^(N-1)*X 用递归算法解决如下 long int Pow( long int X, unsigned int N ) { if( 0 == N) return 1; if( N % 2)//如果N是奇数 return Pow(X * X,原创 2013-07-27 23:06:26 · 608 阅读 · 0 评论 -
Stack
#ifndef _Stack_h //#define _Stack_h typedef int ElementType; struct Node; typedef struct Node *PtrToNode; typedef PtrToNode Stack; int IsEmpty(Stack S); Stack CreateStack(void); void DisposeStack(Stac原创 2013-08-26 20:09:08 · 829 阅读 · 0 评论 -
插入,希尔,快速排序
预备知识:基于比较的排序本质就是将序列中所有的逆序消除.一个排序好的序列是没有逆序的. 定理:N个互异数的数组的平均逆序数是N(N-1)/4. 通过交换相邻元素进行排序的任何算法平均时间复杂度为N^2. (因为每次交换只减少一个逆序,而初始的平均逆序数是N(N-1)/4==>时间复杂度为N^2) 1)插入排序 ,冒泡排序,选择排序==>交换相邻元素的方法 //下面只贴出插入排序程序 //原创 2013-08-24 23:35:21 · 602 阅读 · 0 评论 -
循环队列
/* _Queue_h*/ #ifndef _Queue_h #define _Queue_h struct QueueRecord; typedef struct QueueRecord *Queue; typedef int ElementType; int IsEmpty(Queue Q); int IsFull(Queue); Queue CreateQueue(int MaxElemen原创 2013-08-27 10:23:08 · 1056 阅读 · 2 评论 -
递归实现链表反转
用递归实现链表反转时,每次只考虑两个节点的反转就可以了,实现起来清晰很多。 下面给出链表的数据结构 typedef struct ListNode{ int data; struct ListNode* next; }LIST_NODE; typedef struct List{ LIST_NODE *head; LIST_NODE *tail; in原创 2013-11-28 23:10:11 · 1271 阅读 · 0 评论