
数据结构C++
范国豪
这个作者很懒,什么都没留下…
展开
-
【复习】手写数据结构之动态数组(C语言)
在准备面试前很焦躁,复习下数据结构安安神。实现动态数组思路:先初始化一块内存区域,当插入的数据容量大于该内存区域时,新开辟一块内存,将整个数据移到新内存;以下为简单的代码实现,实现了动态内存的开辟,转移,回收,数据的插入 删除 读取打印;纯记录 供日后回头看。仅供参考,如有不对,望指教;/*******************************************...原创 2019-08-01 11:05:32 · 223 阅读 · 0 评论 -
【复习】手写数据结构之循环链表
思路:循环链表相较于单向链表 最后一个结点指向头结点,这样可以一直循环输出;判断循环列表是否为最后一个结点:1,结点指向头结点 2 列表size上代码,比较简单;实现了指定位置的插入 和返回第一个数值,其他部分和单向链表相同;#include <stdio.h>#include <stdio.h>//结点结构;typedef struct CIRCLE...原创 2019-08-02 11:26:54 · 184 阅读 · 0 评论 -
【复习】手写数据结构之约瑟夫问题求解
#include <stdio.h>#include <stdlib.h>#define m 8#define n 3//结点结构;typedef struct CIRCLENODE{ struct CIRCLENODE* next; int data;}CircleNode;//链表结构;typedef struct CIRCLELIST{...原创 2019-08-02 12:38:54 · 196 阅读 · 0 评论 -
【复习】手写数据结构之二叉树深度、拷贝、释放
#include <stdio.h>#include <stdlib.h>typedef struct BINARYNODE{ char ch; struct BINARYNODE* lChild; struct BINARYNODE* rChild;}BinaryNode;void recursion(BinaryNode* root ,int*...原创 2019-08-06 16:46:36 · 276 阅读 · 0 评论 -
【复习】手写数据结构之二叉树的非递归遍历
逻辑:利用堆栈先进后出,实现二叉树的非递归遍历;1.先将根结点放入堆栈,将其标签设为 false。2、弹出堆栈顶端元素,判断标签;1》若为false设为true,继续放入堆栈;2》若为true 输出此结点信息,再将此结点的右结点,左结点依次压入堆栈;3》若为NULL 不执行任何操作;3、重复执行步骤2 直到堆栈为空;代码如下,可用企业链表进行改进;#i...原创 2019-08-06 23:31:28 · 187 阅读 · 0 评论 -
【复习】手写数据结构之冒泡排序
#include <stdio.h>#include <stdlib.h>void swapData(int* a, int* b){ int temp = *a; *a = *b; *b = temp;}void BubbleSort(int* arr, int length){ int flag = 0; for (int i = 0; ...原创 2019-08-07 10:14:20 · 181 阅读 · 0 评论 -
【复习】手写数据结构之选择排序
思路:选择排序仅仅优化了冒泡排序的交换次数;依次比较,将较大/较小的数放在数列前/后;代码如下:#include <stdio.h>#include <stdlib.h>void swapData(int* a, int* b){ int temp = *a; *a = *b; *b = temp;}void selectSort(in...原创 2019-08-07 10:32:23 · 164 阅读 · 0 评论 -
【复习】手写数据结构之插入排序
#include<stdio.h>#include<stdlib.h>void swapData(int* a, int* b){ int temp = *a; *a = *b; *b = temp;}void insertSort(int* arr, int length){ //for (int i = 0; i < length...原创 2019-08-07 12:29:30 · 183 阅读 · 0 评论 -
【复习】手写数据结构之希尔排序
思路:希尔排序是对插入排序的一个改进。插入排序适用于小数据,且尽可能有序的数据;希尔排序将数据分组,进行排序,再合并进行排序。大大提高了插入排序的效率;#include <stdio.h>#include <stdlib.h>void insertSort(int*arr ,int length){ int tempData = 0; int j;...原创 2019-08-07 16:25:07 · 239 阅读 · 0 评论 -
【复习】手写数据结构之企业链表
企业链表思路:企业链表 为 单向链表的改进,主要通过在数据结构顶端定义结点 每个结点相连 ,这样就可以把数据“串”起来;代码如下,易错主要在结构体类型转换成结点类型这里; 还有自定义的函数指针;#include "stdio.h"#include "stdlib.h"typedef struct LINKNODE{ struct LINKNODE* next;}LinkNo...原创 2019-08-02 01:30:00 · 240 阅读 · 0 评论 -
【复习】手写数据结构之二叉树求叶子结点
叶子结点:没有任何子结点;#include <stdio.h>#include <stdlib.h>typedef struct BINARYNODE{ char ch; struct BINARYNODE* lChild; struct BINARYNODE* rChild;}BinaryNode;void recursion(BinaryN...原创 2019-08-06 11:12:24 · 333 阅读 · 0 评论 -
【复习】手写数据结构之归并排序
思路:归并排序是将两个有序序列合并为一个有序序列; 初始时 将数列进行拆分,使其成为有序序列。然后再合并各有序序列;代码如下;#include <stdio.h>#include <stdlib.h>void merge(int* arr, int start, int end,int mid, int*temp){ int i = start;...原创 2019-08-07 23:07:58 · 174 阅读 · 0 评论 -
【复习】手写数据结构之堆排序
#include <stdio.h>#include <stdlib.h>void MySwap(int* arr, int a, int b){ int temp = arr[b]; arr[b] = arr[a]; arr[a] = temp;}void HeapAdjust(int* arr, int index, int len){ //...原创 2019-08-08 09:18:52 · 163 阅读 · 0 评论 -
【复习】手写数据结构之单向链表
思路 : 链表是由一系列结点组成的,每个结点包含一数据域和指针域,指针域指向下一个结点,这样链表就“串”了起来;相比动态数组 连续空间存储,链表使用随机存储;单向链表结构如代码注释;联想到stl 为什么 vector 插入操作比 list 慢很多,vector 每在中间插入一个数 其后边的数都要移动;上代码;主要实现了 链表尾部插入;指定位置插入;指定位置删除 ;指定值第一次出现位...原创 2019-08-01 16:48:27 · 227 阅读 · 0 评论 -
【复习】手写数据结构之栈的顺序存储
//**********************************************************//数组模拟栈的顺序存储; 2019.8.5 by finer //**********************************************************#include <stdio.h>#inclu...原创 2019-08-06 10:39:36 · 176 阅读 · 0 评论 -
【复习】手写数据结构之栈的链式存储
#include <stdio.h>#include <stdlib.h>typedef struct LINKNODE{ void* data; struct LINKNODE* next;} LinkNode;typedef struct LINKSTACK{ LinkNode* head; LinkNode* rearNode; int s...原创 2019-08-06 10:40:16 · 129 阅读 · 0 评论 -
【复习】手写数据结构之队列顺序存储
//**********************************************************//队列的顺序存储,简单从栈的顺序存储进行修改;// 2019.8.5 by finer //**********************************************************#include <stdio.h&...原创 2019-08-06 10:40:53 · 150 阅读 · 0 评论 -
【复习】手写数据结构之队列链式存储
#include <stdio.h>#include <stdlib.h>typedef struct LINKNODE{ void* data; struct LINKNODE* next;} LinkNode;typedef struct LINKSTACK{ LinkNode* head; LinkNode* rearNode; int s...原创 2019-08-06 10:41:32 · 142 阅读 · 0 评论 -
【复习】手写数据结构之二叉树遍历
思路:主要通过迭代完成 树的先序、中序、后序 遍历;#include <stdio.h>#include <stdlib.h>typedef struct BINARYNODE{ char ch; struct BINARYNODE* lChild; struct BINARYNODE* rChild;}BinaryNode;void recur...原创 2019-08-06 10:44:46 · 208 阅读 · 0 评论 -
【复习】手写数据结构之快速排序
#include <stdio.h>#include <stdlib.h>void quickSort(int* arr, int start ,int end){ int baseData = arr[start]; //取基准数; int i = start, j = end; int blankIdx = start; //挖空的坐标; in...原创 2019-08-07 18:01:40 · 185 阅读 · 0 评论