数据结构
weixin_41521306
这个作者很懒,什么都没留下…
展开
-
数据结构---单链表(循环和非循环)
单链表是线性表链式存储的一种,其储存不连续。单链表的数据结构中包含两个变量:数据和指向下一结点的指针。一个结点只知道下一个结点的地址。一个单链表必须有一个头指针,指向单链表中的第一个结点。否则链表会在内存中丢失。1.带头结点的单链表(头结点的数据域为空,仅仅只有一个指针指向下一个结点,最后一个结点的指针域指向NULL)(1)定义每个结点的存储结构为数据域(类型可以自己改)和指针域(指向...原创 2019-03-16 15:51:16 · 713 阅读 · 0 评论 -
数据结构----双向链表(循环和非循环)
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点,一般分为带头结点双向链表,和不带头结点(带头指针)双向链表(多用做循环双向链表)。1.带头结点的双向链表(有两个指针域,一个指向它的前驱,一个指向它的后继)(1)、双向链表的存储结构双向链表和单链表的区别在于...原创 2019-03-16 16:15:07 · 1140 阅读 · 0 评论 -
二叉树----遍历(先序、中序、后序遍历的递归、非递归+层次遍历)
所谓遍历(Traversal)是指沿着某条搜索路线,依次对树中每个结点均做一次且仅做一次访问。访问结点所做的操作依赖于具体的应用问 题。 遍历是二叉树上最重要的运算之一,是二叉树上进行其它运算之基础。一、先序遍历递归方式实现:访问根结点(此处的根结点并非特指整棵树的根结点,泛着所有子树的根节点); 递归访问左孩子; 递归访问右孩子;void PreOrder(BtNode *...原创 2019-03-20 20:04:49 · 141 阅读 · 0 评论 -
数据结构-------栈
栈是一种特殊的线性表,仅能在线性表的一端操作,栈顶允许操作,栈底不允许操作。栈的特性:后进先出。1.顺序栈(1)顺序栈的的存储结构(底层是数组实现的,就涉及到数组的容量问题;)typedef int ElemType;//便于修改要存储的数据类型;typedef struct stack{ ElemType *data; int size; int top;}S...原创 2019-03-17 14:47:44 · 75 阅读 · 0 评论 -
数据结构----队列
一、顺序队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端进行删除操作,而在表的后端进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列...原创 2019-03-17 15:00:06 · 121 阅读 · 0 评论 -
二叉树---创建
二叉树是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree),二叉树的储存结构typedef char ElemType;typedef struct BtNode { BtNode *leftchild; BtNode *rightchild; ElemType data;}BtNode, *Bina...原创 2019-03-17 17:26:20 · 116 阅读 · 0 评论 -
逆置链表--头插法+就地逆置+辅助栈逆置法
头插法:简单来说;就是依次把头指针指向结点的后面所有结点依次插入头指针指向的位置。以上是不带头结点的单链表形式;第一步:用一个变量p保存头指针指向结点的下一个结点,再将头针指向的结点的next置为NULL,即断开1和后面结点的连接。第二步:只要将p往后跑,依次将p指向的结点插入head指针与第一个结点之间即可;所以这里用p指针不为NULL作为循环条件,q保存p的下一个结点,插入完成...原创 2019-07-21 15:59:44 · 320 阅读 · 0 评论