算法与数据结构
文章平均质量分 52
EdgarSun
这个作者很懒,什么都没留下…
展开
-
链表、栈和队列学习(一)
链表中的元素都是一个包含三个域的对象:一个关键字(或数据)域:data;两个指针(或链)域:next和prev;根据指针域的不同可以把链表细分为:单链表,双链表,循环链表及静态链表。 下面以单链表为研究对象来介绍链表的基本运算。单链表的C语言描述: typedef struct node{ int data; /*数据域*/ struct node *next原创 2006-01-21 16:24:00 · 1783 阅读 · 0 评论 -
单链表排序、逆序
对单链表进行排序,我这里选择冒泡排序,选择对其关键字进行排序;而不选择交换结点。把链表逆序的话,基本思路就是使两结点之间的指向变反,也就是p1->p2变为p2->p1;把第一个结点的指针域设为NULL;最后使头结点指向尾结点。源代码:#include#includetypedef struct node{ int data; struct node *next;}linklist原创 2006-01-24 23:07:00 · 11997 阅读 · 7 评论 -
单循环链表的实现
循环链表(Circular Linked List)是一种首尾相接的链表,它与单链表的唯一区别在于对尾结点的处理;因为在单链表中尾结点的指针域NULL改为指向头结点就得到了单循环链表。单循环链表可以用头指针head或尾指针rear表示,用尾指针rear表示的单循环链表查找开始结点a1和尾结点an就很方便;查找时间都是O(1)。 仅设尾指针rear的单循环链表的实现:#incl原创 2006-01-25 02:45:00 · 4057 阅读 · 1 评论 -
分治法
分治,分而治之;各个击破。 基本思想: 当输入规模n比较大的时候(难以直接解决),划分成等价的k个子问题(可解); 适用条件: 基本步骤:分治法在每一层递归上都有三个步骤:分解、解决、合并;其一般的算法设计模式如下:Divide-and-Conquer(P)1. if |P|≤n0 2. then return(ADHOC(P))3.原创 2006-01-19 13:18:00 · 1178 阅读 · 0 评论