![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
文章平均质量分 82
song_hui_xiang
勤奋努力持之以恒
展开
-
链表(LinkedList) C 语言实现
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。如图:下面是代码实现:#include #include struct student { int score; struct student *next;};typedef struct student NODE; //typedef为C语言的关原创 2015-07-24 15:29:34 · 13975 阅读 · 0 评论 -
二叉搜索树(Binary Search Tree)的插入与删除
二叉搜索树的插入关键是要找到元素应该插入的位置,可以采用与Find类似的方法。二叉搜索树的删除则要考虑三种情况: 1.要删除的是叶节点:直接删除,并再修改其父节点指针置为NULL 2.要删除的节点只有一个孩子的节点:将其父节点的指针指向要删除节点的孩子节点 3.要删除的节点有左、右两棵子树,用另一节点替代被删除的节点:右子树的最小元素或者左子树的最大元素#incl原创 2015-08-16 13:10:16 · 3439 阅读 · 0 评论 -
二叉树 (Binary Tree)的遍历
树是一种比较重要的数据结构,尤其是二叉树。二叉树是每个节点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。二叉树节点定义:#define ElementType chartypedef struct Node { ElementType data; str原创 2015-08-15 09:18:21 · 1636 阅读 · 1 评论 -
二叉搜索树(Binary Search Tree)的查找
二叉查找树(Binary Search Tree),(又:二叉搜索树,二叉排序树)它或者是一棵空树,或者是具有下列性质的二叉树: 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; 它的左、右子树也分别为二叉排序树。/* 二叉搜索树(Binary Search Tree)也称二叉排序树或者二叉查找树 1.非空左原创 2015-08-15 22:11:09 · 1198 阅读 · 0 评论 -
最大子序列和问题
问题描述:给定一整数序列A1, A2,... An (可能有负数),求A1~An的一个子序列Ai~Aj,使得Ai到Aj的和最大。只要求出最大子序列的和,不必求出最大的那个序列。例如:整数序列-2, 11, -4, 13, -5, 2, -5, -3, 12, -9的最大子序列的和为21。下面是C语言实现算法:算法一://穷举算法 复杂度O(N^2)int MaxS原创 2015-07-23 17:09:11 · 925 阅读 · 0 评论 -
二叉树 (Binary Tree)相关题目(求总节点数 叶子节点数 深度 第k层节点数)
1.求二叉树中节点个数2.求二叉树叶子节点个数3.求二叉树的深度4.求二叉树第K层的节点个数#include #include #define ElementType chartypedef struct Node { ElementType data; struct Node *lchild; struct Node *rchild;}Binar原创 2015-08-15 14:22:11 · 1674 阅读 · 1 评论 -
队列(Queue) C 语言实现
队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素成为出队。队列中没有元素时,称为空队列。因为队列只允许在一段插入,在另一端删除,所以只有最早进入队列原创 2015-07-30 11:03:07 · 29977 阅读 · 1 评论 -
链表(LinkedList) Java 语言实现
先要说的是,java的API里面已经提供了单向链表的类,大家可以直接拿来用。在这自己实现的目的是为了更好的理解链表数据结构。这里主要是介绍一些常用结构里面都会用到的方法,以及链表具体是如何操作的。People.java 类是自定义的数据类型public class People { private String name; //姓名 private int age; //年龄 pri原创 2015-07-29 20:21:50 · 1081 阅读 · 0 评论 -
栈(Stack) C 语言实现
栈(stack)又名堆栈,它是一种运算受限的线性表。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。一、数组实现堆栈//堆栈的数组实现#include #inclu原创 2015-07-29 09:39:34 · 7469 阅读 · 0 评论 -
数据结构之链表与数组(-)——数组和链表的简介
转自:http://www.cnblogs.com/lina1006/archive/2011/05/06/2039099.html 众所周知,在计算机中要对给定的数据集进行若干处理,首要任务是把数据集的一部分(当数据量非常大时,可能只能一部分一部分地读取数据到内存中来处理)或全部存储到内存中,然后再对内存中的数据进行各种处理。 例如,对于数据集S{1,2,3,4,转载 2015-07-24 10:32:16 · 1499 阅读 · 0 评论