数据结构
木有枝兮木有枝
这个作者很懒,什么都没留下…
展开
-
1.3 静态链表
静态链表类似于并查集,静态链表不具有分支结构。在一些不支持指针的高级语言中,使用静态链表构建单链表是一种非常巧妙的方法。 #include <stdio.h> #include <stdlib.h> #define MaxSize 50 // 静态链表以-1作为结束标志。静态链表的修改只需要移动指针,不需要移动数据。静态链表同样是从数组下标0开始存储元素。 typedef...原创 2019-05-03 20:53:25 · 132 阅读 · 0 评论 -
3.4 双端队列
#include <stdio.h> #include <stdlib.h> #define ERROR 1e5 typedef struct Node { int Element; struct Node *next, *last; }*PtrToNode; typedef struct DequeRecord { struct Node *...原创 2019-05-03 21:08:51 · 123 阅读 · 0 评论 -
3.3 循环队列
// 循环队列采用顺序存储,为了区分队头和队尾,从1号下标开始存储 // 队头队尾同时指向0号下标表示队空,队尾下标的下一个元素是队头的时候表示队满 // 可以设置front指向队头元素,rear指向队尾元素的下一个位置 // 或者设置front指向队头元素的下一个节点,rear指向队尾元素 // 本程序采用前一种,后一种在操作的时候略有不便 // 出队的时候front+1,入队的时候rear+1...原创 2019-05-03 21:08:10 · 188 阅读 · 0 评论 -
3.2 队列-链式存储
// 带头节点的链式存储队列 #include <stdio.h> #include <stdlib.h> typedef struct node{ int data; struct node * next; }QNode; typedef struct queue{ QNode *front; QNode *rear; }Queue; ...原创 2019-05-03 21:07:32 · 119 阅读 · 0 评论 -
3.1 队列-顺序存储
// 队列的顺序存储 // 队空:front=rear=0 // 入队:rear+1 // 出队:front+1 // 该数组无头元素,出队入队都向上。 // 会产生假溢出,即rear=MAXSIZE且元素未填满队列时。 // 如何判断真正的上溢出?rear=MAXSIZE & rear!=0 // 扩展:区分真假溢出,如果是假溢出,可以reset一下。 // 但是如果数据量大,reset...原创 2019-05-03 21:06:53 · 103 阅读 · 0 评论 -
2.2 链栈
#include <stdio.h> #include <stdlib.h> typedef struct _Node{ char data; struct _Node *next; }Node; typedef struct _Stack{ Node * top; }Stack; void initStack(Stack *s){ ...原创 2019-05-03 21:06:09 · 103 阅读 · 0 评论 -
2.1 顺序栈
#include <stdio.h> #include <stdlib.h> #define MaxSize 50 // 顺序栈同数组,下标是从0开始,第一个元素占据0号位置,栈空为top=-1,栈满是MaxSize-1 // 记住顺序存储的存储结构。注意有top标记和元素数组 // 关键操作:1.判空(S->top=-1),判满(top=MaxSize-1);2....原创 2019-05-03 21:05:28 · 102 阅读 · 0 评论 -
1.4 双向循环链表
// 该程序使用带头结点的双向循环链表 // 交换节点进行排序 //补充:locate & Insert #include <stdio.h> #include <stdlib.h> typedef struct _Node{ int data; struct _Node *next; struct _Node *prior; }DNo...原创 2019-05-03 21:01:08 · 185 阅读 · 0 评论 -
1.2 顺序表
#include <stdio.h> #include <stdlib.h> #define MaxSize 10 // 注意:顺序表不存在头节点下标0要插入。有MaxSize定义最大长度,有Length定义当前长度,有data存放数据。 // 静态分配 typedef struct{ int data[MaxSize]; // 该顺序表是固定元素的组数。...原创 2019-05-03 20:58:59 · 120 阅读 · 0 评论 -
1.1 单链表
#include <stdio.h> #include <stdlib.h> #include <time.h> // 带头节点的单向链表,使用头插法进行创建,并使用冒泡排序进行排序 // 单链表的头节点一般不存储元素。 typedef struct _Node{ int data; struct _Node *next; }Node; ...原创 2019-05-03 20:55:20 · 139 阅读 · 0 评论 -
冒泡排序-顺序表与单链表的优化算法
冒泡排序有多种。下面是比较通用的一种: // 顺序表的冒泡排序 void bubbleSort(int R[],int n){ int i,j,flag; for(i=n-1;i>0;i--){ flag=1; for(j=0;j<i;j++){ if(R[j]>R[j+1]){ ...原创 2019-04-25 09:10:06 · 646 阅读 · 0 评论