数据结构
Nireus_LOVE
这个作者很懒,什么都没留下…
展开
-
数据结构---树
1. 二叉树可以采用顺序存储数组和链式存储二叉链表两种方法来存储二叉树。经常使用的二叉链表方法,因为其非常灵活,方便二叉树的操作。二叉树的二叉链表存储结构如下所示:typedef struct binary_tree_node{ int elem; struct binary_tree_node *left; struct binary_tree_node *right;原创 2016-05-24 12:18:18 · 268 阅读 · 1 评论 -
数据结构 --- 栈和队列
1. 用两个栈来实现队列思路:栈是先进后出,而队列是先进先出。可以这样设计,一个栈用于入队列操作,设为Stack1,另一个栈用于出队列操作,设为Stack2。入队列可以在常数时间内完成,即Stack1的入栈操作。而出队列时,若Stack2的元素不为空,Stack2执行出栈操作,相当于出队列。若为空,则将Stack1的元素一个个出栈,压入Stack2中,然后Stack2再执行一次出栈操作。 1. t原创 2016-05-24 13:54:33 · 568 阅读 · 0 评论 -
数据结构 --- 堆
1. 定义及操作堆给人的感觉是一个二叉树,但是其本质是一种数组对象,因为对堆进行操作的时候将堆视为一颗完全二叉树,树种每个节点与数组中的存放该节点值的那个元素对应。所以堆又称为二叉堆,堆与完全二叉树的对应关系如下图所示: n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1)ki<=k(2i)且ki<=k(2i+1)(1≤i≤ n),当然,这原创 2016-05-24 14:05:30 · 219 阅读 · 0 评论 -
数据结构 --- 数组
1. 求数组中第二大的数1. //定义两个变量2. const int MINNUMBER = -32767 ; 3. int find_sec_max( int data[], int count) 4. { 5. int原创 2016-05-24 19:47:57 · 1868 阅读 · 0 评论 -
数据结构---字符串
1. 翻转句子中单词的顺序,但单词内字符的顺序不变思路:先逆转整个句子,然后从首字符开始扫描,每扫描到一个单词(遇到空白或结束字符),对这个单词进行逆转。1. void Reverse(char *pBegin, char *pEnd) 2. { 3. if(pBegin == pEnd) 4. return; 5. while(pBegin原创 2016-05-23 17:58:31 · 1322 阅读 · 0 评论 -
数据结构---单链表
1. 已知链表的头结点head,写一个函数把这个链表逆序1. void List::reverse() 2. { 3. list_node * p = head; 4. list_node * q = p->next; 5. list_node * r = NULL; 6. while(q){ 7.原创 2016-05-23 18:09:39 · 436 阅读 · 0 评论 -
字符串 --- KMP算法
字符串匹配举例来说,有一个字符串”BBC ABCDAB ABCDABCDABDE”,我想知道,里面是否包含另一个字符串”ABCDABD”?KMP算法首先,字符串”BBC ABCDAB ABCDABCDABDE”的第一个字符与搜索词”ABCDABD”的第一个字符,进行比较。因为B与A不匹配,所以搜索词后移一位。**B**BC ABCDAB ABCDABCDABDE**A**BCDABD因为B与A不原创 2016-06-27 11:17:21 · 358 阅读 · 0 评论