数据结构
爆炒八酱
唯美食与妹子不可辜负...
展开
-
栈的基础应用-2进制转化10进制
今天还是看了一些关于栈的的问题,其中挑出一个简单的(关于进制转换)代码如下:#include<stdio.h>#include<stdlib.h>#include<math.h>#define stack_init_size 20#define stackincreament 10typedef char Elemtype;typedef struct{ Elemtype *ba原创 2016-08-11 17:52:29 · 268 阅读 · 0 评论 -
二叉树反向遍历
//编写一道自下而上,从右至左的二叉树层次遍历#include<stdio.h> typedef struct BiTree() { int data; struct BiTree *lchild,*rchild; }BiTNode,*BiTree; void RelevelOrder(BiTree T) { InitStack(S); InitQueue(原创 2017-10-15 22:48:56 · 2039 阅读 · 2 评论 -
二叉树中序遍历线索化
#include<stdio.h> typedef struct ThreadNode{ int data; struct ThreadNode *lchild,*rchild; int ltag,rtag; }ThreadNode,*ThreadTree; //用二叉树中序遍历对二叉树线索化 void InThread(ThreadTree &p,ThreadTr原创 2017-10-15 22:49:26 · 1120 阅读 · 0 评论 -
非递归层次遍历查二叉树深度
#include<stdio.h> typedef struct BiTree{ int data; struct BiTree *lchild,*rchild; }BiTNode,*BiTree;int Btdepth(BiTree T){ if(!T) return 0; //树空,高度为0 i原创 2017-10-15 22:50:05 · 326 阅读 · 0 评论 -
构造邻接表
//构造邻接表/*1.如果G为无向图,则所需存储空间为O(|V|+2|E|); 2.如果G为有向图,则所需存储空间为O(|V|+|E|); 3.因为在邻接表中,无向图的每条边出现了两次(无向图的每个结点与相连结点相互构成一条邻接边); 4.要求有向图某结点的出度,只需查看此结点的表内结点数目即可; 5.要求有向图某结点的入度,需要遍历整个邻接表; 6.邻接表的表示不唯一,因为在构造某个原创 2017-10-15 22:50:47 · 730 阅读 · 0 评论 -
构造十字链表
//十字链表法(会画图即可,一般不需要写算法*-*)#include<stdio.h>#define MaxV 100//构造弧结点 typedef struct ArcNode{ int tailvex,headvex; //该弧的弧头(tailvex),弧尾结点(headvex).方便记忆hutou(虎头)huwei(虎尾) struct ArcNod原创 2017-10-15 22:51:18 · 357 阅读 · 0 评论 -
(计算机考研数据结构)就地逆置
//就地逆置 #include<stdio.h>typedef struct{ int data; int *next;}Lnode ,*Linklist;//头插法 Linklist Reservr(Lnode &L){ Lnode *p,*q;//p为工作指针,q为辅助指针 p = L->next; L->ne...原创 2017-10-15 22:51:58 · 473 阅读 · 0 评论 -
(计算机考研数据结构)快速排序
//快速排序算法void QuickSort(ElemType a[],int low,int hight){ if(low<high) //递归出口 //Partition()是划分操作,将表a[low...high]划分为满足上述条件的两个子表 { int piv...原创 2017-10-15 22:52:23 · 441 阅读 · 0 评论 -
(计算机考研数据结构)链式队的基本操作
#include<stdio.h>typedef struct{ int data; struct Lnode *next;}Lnode;typedef struct{ Lnode *rear,*front;}LinkQueue;//初始化链队bool Cre_Queue(LinkQueue &Q){ Q = (LinkQueue...原创 2017-10-15 22:52:48 · 323 阅读 · 0 评论 -
二叉树的三序(递归非递归)遍历
#include<stdio.h> typedef struct BiTree() { int data; struct BiTree *lchild,*rchild; }BiTNode,*BiTree; /*------------------------------------------------*/ //递归遍历//先序遍历void PreOrder(BiTr原创 2017-10-15 22:48:16 · 265 阅读 · 0 评论 -
单链表删除x
#include<stdio.h>typedef struct{ int data; int *next;}Lnode ,*Linklist;void Del_x(Lnode &L , int x)//假设x为整形数 { Dnode *p = L,*q; if(p->next==NULL) return false; if(p->data ==原创 2017-09-29 21:07:40 · 426 阅读 · 2 评论 -
二叉排序树的构造与插入
#include<stdio.h>typedef struct BiTree{ int key; struct BiTree *lchile,*rchild;}BST,*BiTree;//在二叉排序树上插入结点 void BTS_Insert(BiTree &T,int k){ if(T == NULL) { T = (BiTree *)mall原创 2017-09-29 21:09:30 · 922 阅读 · 0 评论 -
(栈)判断链表中的数是否对称
#include<stdio.h>#define Maxsize ntypedef struct Linknode{ char data[Maxsize]; int top0,top1;} *LiStack;//默认初始化后的栈 typedef struct Linklist{ char data; struct Linklist *next;}Lnode原创 2017-09-29 21:02:02 · 1882 阅读 · 0 评论 -
BFS算法(类似与树的层次遍历)
//图的广度优先搜索(Breadth-First-Search,BFS)//类似于树的层次遍历,借助于队来实现 bool visited[MaxV]void BFSTraverse(Graph G) //首先对图遍历,并标记visited为fasle(未访问状态)设访问结点函数为visit(); { for(int i = 0,i < G.vexn原创 2017-09-29 21:02:45 · 2053 阅读 · 0 评论 -
BFS算法之求单源最短路径
//BFS求两顶点最短距离问题//总结:图的代码并不像链表,而更像是顺序表,其存储结构使用的是数组的方式。 int BFS_Mix_Distance(Graph G,int u,int i) //求u到i的路径长度{ int w; InitQueue(Q); visit(u); visited[u] = true; EnQueue(Q,u);原创 2017-09-29 21:03:19 · 6108 阅读 · 0 评论 -
DFS非递归算法
DFS非递归算法原创 2017-09-29 21:03:54 · 8570 阅读 · 18 评论 -
深度优先搜索(Depth-First-Search,DFS)
//深度优先搜索(Depth-First-Search,DFS)//类似于先序遍历,采用递归算法实现bool visited[MAX_VERTEX_NUM]void DFSTraverse(Graph G){ for(i = 0;i<G.vexnum;++i) { visited[i] = false; } for(i = 0;i < G原创 2017-09-29 21:04:27 · 329 阅读 · 0 评论 -
WPL算法(二叉树问题)
//WPL算法 #include<stdio.h>typedef struct BiTree{ struct BiTree *lchild,*rchild; int weight;}Lnode,*BiTree;//基于先序遍历的算法int WPL(BiTree T){ WPL_PreOrder(T,0);}int WPL_PreOrder(BiTree T,in原创 2017-09-29 21:06:27 · 3136 阅读 · 3 评论 -
单链表
#include<stdio.h>typedef struct{ int data; int *next;}Lnode ,*Linklist;//头插法创建单链表//特点,每次插入一个节点需要的时间为O(1),插入n个节点所需要的时间为O(n) Linklist Creat(Linklist &L){ Lnode *s,int x; L=(LinkList原创 2017-09-29 21:06:55 · 182 阅读 · 0 评论 -
队的基本操作
/*队的基本操作 InitQueue(&Q) //初始化队列 QueueEmpty(Q) //判断队是否为空 EnQueue(&Q,&x) //入队 DeQueue(&Q,&x) //出队 GetHead(&Q,&x) //读出队头 注:队是受限的线性表,无法读出队中的某一个元素 */#include<stdio.h>#define Maxsize 50typ原创 2017-09-29 21:08:42 · 763 阅读 · 0 评论 -
(计算机考研数据结构)希尔排序
//希尔排序/*算法思想1.先定步数n,即向隔n位的两个数为一组2.对每组数进行直接插入排序3.令n2=n1/2,划分组,进行2。若n1等于1,进行4 4.排序结束*/void shellSort(ElemType a[],int n){ int k,i,j; for(k = n/2;k >= 1; k = k/2) //这里令步数为n/...原创 2017-10-15 22:53:14 · 396 阅读 · 0 评论