数据结构
止步听风
这个作者很懒,什么都没留下…
展开
-
双向循环列表(C 语言实现)
// node.h#ifndef NODE_H#define NODE_Htypedef struct Node{ int data; struct Node *pre; struct Node *next;}ND;// insert a node from tailND *createListTail();// insert a node from...原创 2020-04-16 21:06:29 · 546 阅读 · 0 评论 -
数组查找(C 语言实现)
本文主要包含常见的数组查找方法。线性查找线性查找是最为简单粗暴的查找方法了,直接从数组首元素开始查找,直到找到要查找的元素为止。#include <stdio.h>#include <stdlib.h>int LineSearch(int *p,int length,int search){ for(int i=0;i<length;i+...原创 2020-04-16 15:52:41 · 4185 阅读 · 0 评论 -
数组排序(C 语言实现)
本文主要包含常见的数组排序方法。选择排序原理在原始数组中取未排序的首元素,与其后方所有元素比较,不满足顺序,则交换 首元素此时满足条件,未排序部分后移 重复上述操作代码实现#include <stdio.h>#include <stdlib.h>void SelectSort(int *p,int n){ for(int i=0;i&...原创 2020-04-16 15:13:22 · 4884 阅读 · 0 评论 -
优先队列
定义相比较于普通队列来说,优先队列的每个元素都被赋予了优先级。当需要出队列操作时,具有最高优先级的元素会先出队列。因此是符合优先级优先的特征,被称为优先队列。优先队列实现#priority_queue.h#ifndef PRIORITY_QUEUE_H#define PRIORITY_QUEUE_Husing std::cout;using std::endl;clas...原创 2019-11-02 10:53:54 · 366 阅读 · 0 评论 -
栈和队列
定义栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(fron...原创 2019-11-02 10:46:44 · 223 阅读 · 0 评论 -
循环链表
在某些情况下可能会用到循环链表,其中的节点组成一个环:链表的长度是有限的,每个节点都有后继节点。在循环单向链表的实现中,即使对链表的操作需要访问尾部节点及其头部节点,也可以只固定一个固定指针 tail。用 C++ 进行对单指针的循环链表进行构建为:// linked_lists.h#ifndef LINKED_LIST_H#define LINKED_LIST_Husing ...原创 2019-10-19 17:20:47 · 392 阅读 · 0 评论 -
双向链表
在单向链表的删除操作中,如果要从链表尾部删除一个节点,需要用循环找到 tail 前面的节点实现节点去除。对于较长的链表和频繁执行尾部删除的情况来说,这是一个影响处理速度的障碍。为了避免这个问题,可以对单向链表进行重新定义,使链表中的每个节点有两个节点,一个指向前驱,一个指向后继,这种链表被称为双向链表。用 C++ 对双向链表进行构建。//linked_lists.h#ifndef LI...原创 2019-10-19 17:07:12 · 221 阅读 · 0 评论 -
单向链表
为什么要使用链表数组是程序设计语言中的一种比较有用的数据结构,但是数组也存在其本身的局限性:1. 编译期间需要明确指定大小2. 数组中的数据在计算机内存中是连续的,也就是说每个元素在内存中的间隔是相同的,当要在数组中插入或删除一个元素时,需要移动该数组中的其它数据。而这些问题在链表中是不存在的,链表由一个个节点组成,节点中保存着属于该节点的信息和指向下一个节点的指针。通过这种方式,...原创 2019-10-19 16:41:14 · 275 阅读 · 0 评论