数据结构
土肥宅娘口三三
这个作者很懒,什么都没留下…
展开
-
线性表之顺序存储结构(顺序表)
#include#includetypedef int Elemtype;#define MAXSIZE 20 typedef struct List{ Elemtype data[MAXSIZE]; int length;}List;void InitList(List *L){ L->length = 0;}void ClearLsit(List *L){ L->原创 2016-03-11 21:24:59 · 731 阅读 · 0 评论 -
表达式求值-栈和队列的应用
#include#include#define OK 1#define ERROR 0#define STACK_SIZE 20#define STACK_INCREMENT 10#define QUEUE_SIZE 20typedef int Status;typedef char StackElemtype;typedef struct Stack{ StackEle原创 2016-03-11 22:57:39 · 1784 阅读 · 0 评论 -
KMP算法
/* next数组是KMP算法的关键,next数组的作用是:当模式串T和主串S失配 * ,next数组对应的元素指导应该用T串中的哪一个元素进行下一轮的匹配 * next数组和T串相关,和S串无关。KMP的关键是next数组的求法。 * * ——————————————————————————————————————————————————————————————————— * | T原创 2016-03-11 22:59:23 · 409 阅读 · 0 评论 -
顺序队列的实现
#include#include#define OK 1#define ERROR 0#define QUEUE_INIT_SIZE 5typedef int Status;typedef int Elemtype;typedef struct QuqQueue{ Elemtype* base; int front; int rear;}SuqQueue;Status原创 2016-03-11 23:04:06 · 593 阅读 · 0 评论 -
链队列简单应用将输入的句子输出
#include#include#define OK 1#define ERROR 0typedef int Status;typedef char Elemtype;typedef struct QueueNode{ Elemtype data; struct QueueNode* next;}QueueNode,*QueueNodePtr;typedef struct原创 2016-03-11 23:07:30 · 943 阅读 · 0 评论 -
线索二叉树及其遍历
遍历二叉树就是以一定的规则将二叉树中的节点排列成一个线性序列,从而得到二叉树节点的各种遍历序列,其实质是:对一个非线性的结构进行线性化。使得在这个访问序列中每一个节点都有一个直接前驱和直接后继。传统的链式结构只能体现一种父子关系,¥不能直接得到节点在遍历中的前驱和后继¥,而我们知道二叉链表表示的二叉树中有大量的空指针,当使用这些空的指针存放指向节点的前驱和后继的指针时,则可以更加方便的运用二叉树的原创 2016-03-13 15:05:36 · 1095 阅读 · 0 评论 -
二叉树的链式存储结构 前序 后序 中序 层序遍历操作实现 判断是否完全二叉树
#include#include#define OK 1#define ERROR 0#define YES 1#define NO 0typedef int Status;typedef char ElemType;typedef struct BiTreeNode{ ElemType data; struct BiTreeNode *lchild, *rchild;原创 2016-03-13 15:22:21 · 1867 阅读 · 0 评论 -
图的邻接表存储表示 图的深度优先遍历和图的广度优先遍历
#include#include#define MAX_VERTAX_SIZE 20#define OK 1#define ERROR 0typedef int Status;typedef char ElemType;typedef struct EageNode{ int adjacentVertax; struct EageNode* nextAdjacentVert原创 2016-03-13 15:30:42 · 11225 阅读 · 0 评论 -
马踏棋盘问题
问题描述:将马随机放在国际象棋的Board[0~7][0~7]的某个方格中,马按走棋规则进行移动。走遍棋盘上全部64个方格并且不能重复。求出马的行走路线,并按求出的行走路线,将数字1,2,…,64依次填入一个8×8的方阵,输出之,使用的思想可以理解为图的深度优先遍历。#include#include#define CHESS_SIZE 5int chess[CHESS_SIZE]原创 2016-03-13 15:32:54 · 900 阅读 · 0 评论 -
Prim算法求MST(最小生成树)
Prim算法求最小生成树使用的图的存储结构是图的邻接矩阵#include#define MAX_VERTAX_SIZE 20#define INFINITE 65535#define OK 1#define ERROR 0//图的邻接矩阵表示的结构定义typedef int Status;typedef char VertaxElemType;typedef str原创 2016-03-13 15:38:25 · 1258 阅读 · 0 评论 -
Kruskal算法求MST(最小生成树)
Kruskal算法求最小生成树使用的图的存储结构是图的边表存储结构#include#include#define MAX_VERTAX_SIZE 20#define MAX_EAGE_SIZE 50#define OK 1#define ERROR 0typedef int Status;typedef char VertaxElemType;typedef struct原创 2016-03-13 15:41:36 · 1155 阅读 · 0 评论 -
二叉树的基本操作
常用的二叉树的链式存储结构有二叉链表和三叉链表来表示,其数据结构的C语言定义以及示意图如下:本来介绍基于二叉链表的存储结构上的二叉树的几个常用的操作: 1.二叉树的创建, 2.使用递归算法进行二叉树的先序,中序和后序遍历。 3.使用非递归算法进行二叉树的中序遍历(u需要借助于栈) 4.借助于数据结构队列实现二叉树的层序遍历。 5.一些其他的函数,求取叶子节原创 2016-11-09 09:20:50 · 989 阅读 · 0 评论 -
二叉查找树C语言实现及其可视化
0, 二叉搜索树的定义:(二叉查找树)(二叉排序树) (1)若左子树非空,则左子树上的所有的节点的值都小于根节点的值 (2)若右子树非空,则右子树上的所有的节点的值都大于根节点的值 (3)其左右子树都是二叉搜索树 1,二叉查找树的表示法struct TreeNode;typedef struct Tr原创 2016-11-30 13:10:51 · 5041 阅读 · 0 评论 -
栈应用之将中缀表达式转化为后缀表达式(逆波兰表达式)
#include#include#define OK 1#define ERROR 0#define STACK_INIT_SIZE 20#define STACK_INCREMENT 10typedef char Elemtype;typedef int Status;typedef struct StackNode{ Elemtype* base; Elemt原创 2016-03-11 22:56:39 · 765 阅读 · 0 评论 -
栈应用之使用逆波兰输入求表达式的值
#include#include#include#define OK 1#define ERROR 0#define STACK_INIT_SIZE 20#define STACK_INCREMENT 10#define DIGITBUFFER 10typedef int Status;typedef double Elemtype;typedef stru原创 2016-03-11 22:55:02 · 686 阅读 · 0 评论 -
线性表的链式存储结构
#include#include#includetypedef int Elemtype;typedef struct Node{ int data; struct Node* next;}Node;typedef struct Node* LinkList;void InitLinkList(LinkList *L);void DestoryList(LinkList原创 2016-03-11 22:26:35 · 687 阅读 · 0 评论 -
单循环链表(使用尾指针表示)
#include#include/* 用尾指针表示的单循环链表,相比于使用头指针表示的单循环链表: * 后者在寻找链表的第一个节点的时候,时间复杂度是O(1),在寻找链 * 表的最后一个元素的时候,时间复杂度是O(n)。 * 前者在寻找链表的第一个节点的时候,事件复杂度是O(1)(tail->next * ->next->data即为第一个元素的值),在寻找最后一个节点的时候,时间原创 2016-03-11 22:29:30 · 6060 阅读 · 1 评论 -
判断单循环链表中是否存在环
#include#includetypedef struct Node{ int data; struct Node* next;}Node;typedef struct Node* LinkList;void InitialLinkList(LinkList *L){ (*L) = (LinkList)malloc(sizeof(struct Node)); if(!(*L原创 2016-03-11 22:32:05 · 621 阅读 · 0 评论 -
拉丁方阵(单循环链表实现)
#include#includetypedef struct Node{ int data; struct Node* next;}Node,*LinkList;void CreateSimpleCycleList_tail(LinkList *L,int number){ /* 创建一个单循环链表,没有头结点,尾指针指向第一个节点。 * */ int count; Lin原创 2016-03-11 22:33:59 · 1179 阅读 · 0 评论 -
约瑟夫问题(单循环链表解决)
/*Joseph Problem *利用单循环链表解决约瑟夫问题。 *问题描述:将n个数链接成一个环,从第m个开始,每次从1计数到s时 * 将s删除。从下一个开始再次从1计数至s时删除s。直到全 * 部删除为止。 * */#include#includetypedef struct Node{ int data; struct Node* next;原创 2016-03-11 22:37:44 · 1372 阅读 · 0 评论 -
线性表之双循环链表
#include#include#define OK 1#define ERROR 0typedef int Elemtype;typedef int Status;typedef struct Node{ Elemtype data; struct Node* prior; struct Node* next;}Node;typedef struct Node* Do原创 2016-03-11 22:40:45 · 673 阅读 · 0 评论 -
线性表之静态链表
#include#include//typedef 80 MAXSIZE;#define MAXSIZE 20typedef struct Node{ int data; int cursor;}Node,StaticList[MAXSIZE];void InitialSpace(StaticList Space){ int i; for(i = 0;i < MAXSIZ原创 2016-03-11 22:42:57 · 546 阅读 · 0 评论 -
汉诺塔解法C语言实现
/*汉诺塔的玩法: * 游戏的规则:将A柱上的盘子移动到C柱上,大盘必须在小盘之上。 * 1 当A柱上只有一个盘子的时候,直接移动到C柱上; * 2 当A柱上有两个盘子的时候, * 将A柱上的1盘(从上到下编号)移动到B柱, * 将A柱上的2盘移动到C柱, * 将B柱上的1盘移动到C柱; * (将A上的1~n-1盘---->B柱,将A柱上n---->C柱,B柱上的1~原创 2016-03-11 22:45:07 · 1004 阅读 · 0 评论 -
八皇后问题最简单的解法
#includeint chess[8][8];int count = 0;void display(){ int row,col; for(row = 0; row < 8; row++){ for(col = 0; col < 8; col++){ if(chess[row][col] == 1){ printf("%c ",45); } else原创 2016-03-11 22:46:52 · 727 阅读 · 0 评论 -
顺序栈的实现
#include#include#define STACK_INIT_SIZE 10#define STACKINCREASE 10#define OK 1#define ERROR 0typedef int ElemType;typedef int Status;typedef struct{ ElemType* base; ElemType* top; int In原创 2016-03-11 22:49:28 · 497 阅读 · 0 评论 -
栈的应用之二进制转换为十进制,八进制和十六进制
#include#include#include#define INIT_STACK_SZIE 20#define STACK_INCREMENT 10#define OK 1#define ERROR 0typedef char Elemtype;typedef int Status;typedef struct SuqStack{ Elemtype* base; E原创 2016-03-11 22:52:28 · 941 阅读 · 0 评论 -
图的邻接矩阵存储表示 深度优先和广度优先遍历
#include#include#define OK 1#define ERROR 0#define MAX_VERTAX_SIZE 20typedef char VerElemType;typedef char ElemType;typedef int Status;typedef struct Graph{ VerElemType VertaxMatrix[MAX_VE原创 2016-03-13 15:26:24 · 8705 阅读 · 0 评论