数据结构
文章平均质量分 73
沧浪之水清兮
这个作者很懒,什么都没留下…
展开
-
线性结构---连续存储[数组]
郝斌老师---------连续存储【数组】#include#include#include //包含了exit//定义了一个数组类型struct Arr{ int *pBase; //存储数组元素的第一个元素的地址 int len ; //数组能容纳的最大元素个数 int cnt; //当前数组有效元素个数} ;void init_arr(原创 2016-11-04 13:41:44 · 246 阅读 · 0 评论 -
郝斌---循环队列
#include #include #define M 6 //数组长度 #define bool char //c语言中没有bool类型,自己添加的 #define true 1 #define false 0 typedef struct Queue{ int * pBase;//数组首地址,相当于数组名 int front; int rear;原创 2016-11-19 19:38:00 · 352 阅读 · 0 评论 -
队列在杨辉三角中的应用
#include #include #include //#include using namespace std;#define TRUE 1#define FALSE 0#define Maxsize 100 typedef unsigned long int UINT;typedef strUCt{ UINT data[Maxsize]; int front,rea转载 2016-11-16 16:44:13 · 361 阅读 · 0 评论 -
双端队列
#include #define QUEUESIZE 8 typedef char DataType;typedef struct DQueue{DataType queue[QUEUESIZE];int end1;int end2;}DQueue;int EnQueue(DQueue *DQ, DataType e, int tag)原创 2016-11-16 16:43:36 · 469 阅读 · 0 评论 -
郝斌---递归之汉诺塔
#includevoid Hannuota(int n, char A, char B, char C){ /* 如果一个盘子 直接将A柱子上的盘子从A移到C 否则 先将A柱子上的n-1个盘子借助C移到B 直接将A柱子上的盘子从A移到C 最后将B柱子上的n-1个盘子借助A移到C */ if (n == 1) { printf("将编号为%d的盘子直接从%c柱子原创 2016-11-16 16:27:56 · 228 阅读 · 0 评论 -
编写n的阶乘的递归算法和利用栈结构的非递归实现算法
#include#define MAXSIZE 100int fac1(int n);int fac2(int n);void main(){ int f1,f2, n; printf("请输入一个正整数(n<15):"); scanf("%d", &n); printf("递归实现n的阶乘:"); f1 = fac1(n); printf("n!=%4d\n", f1)原创 2016-11-16 16:27:41 · 2266 阅读 · 0 评论 -
线性表---就地逆置
#include#include#include#includevoid main(){ int a[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; int i; LinkList L; InitList(&L); for (i = 1; i <= sizeof(a) / sizeof(a[0]); i++) { if (InsertLis原创 2016-11-04 13:41:24 · 1215 阅读 · 0 评论 -
循环链表的简单应用
#include #include #include typedef int DataType;typedef struct Node{ DataType data; struct Node* next;}ListNode, *LinkList;LinkList CreateCycList(int n);//创建循环单链表 void DisplayCycLis原创 2016-11-04 13:39:56 · 414 阅读 · 0 评论 -
循环链表--约瑟夫问题
设编号分别为:1,2,...,n的n个人围坐一圈。约定序号为k(1 算法思路: 1、先建立一个有n个结点的单循环链表,编号从1到n,代表n个人。2、找到第K个结点,即第一个开始报数的人。 3、编号为K的人从1计数,计到m时,对应结点从链表中删除;然后再从被删除结点的下一个结点起又从1开始计数....,直到所有结点都列出时算法结束。原创 2016-11-04 13:40:15 · 349 阅读 · 0 评论 -
双向链表的应用
#include#include#includetypedef char DataType;typedef struct Node{ DataType data; struct Node *prior; struct Node *next;}DListNode,*DLinkList;DListNode* GetElem(DLinkList head, int i);void原创 2016-11-04 13:40:33 · 1027 阅读 · 0 评论 -
各种线性表的操作
#include#includevoid SplitSeqList(SeqList *L);void main(){ int flag, i, n; DataType e; SeqList L; int a[] = { -7, 0, 5, -8, 9, -4, 3, -2 }; InitList(&L); n = sizeof(a) / sizeof(a[0]); for原创 2016-11-04 13:41:05 · 309 阅读 · 0 评论 -
静态链表的应用
主函数程序如下:#include #include #include typedef char ElemType;#include "SLinkList.h"void main(){ SLinkList L; int i, len, pos; char e; DataType a[] = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', '原创 2016-11-04 13:40:48 · 398 阅读 · 0 评论 -
中缀到后缀的转换,并求值
通常人在书写的时候习惯是书写中缀表达式也叫逆波兰式,然而在计算机处理的时候中缀表达式的效率远小于后缀表达式,即操作数在前面,运算符在后面例如:中缀表达式 A+B 后缀表达式AB+ A+B*C ABC*+ A*B+C*D AB*CD*+转载 2016-11-16 16:33:48 · 322 阅读 · 0 评论 -
建立链表
ListNode* createList(){ ListNode* head = (ListNode*)malloc(sizeof(ListNode)); ListNode *p, *q; q = head; int val; while (1) { cin >> val; if (val == -1) { break; } p = (ListN...原创 2018-04-20 19:00:23 · 234 阅读 · 0 评论 -
建立二叉树
void createBiTree(TreeNode* &T) //&的意思是传进来节点指针的引用,括号内等价于 BiTreeNode* &T,目的是让传递进来的指针发生改变{ char c; cout << "input treeNode:"; cin >> c; if ('#' == c) //当遇到#时,令树的...原创 2018-04-20 19:02:55 · 187 阅读 · 0 评论 -
哈夫曼树构建与哈夫曼树编码
图解哈夫曼树:https://blog.csdn.net/lee18254290736/article/details/77618201构建哈夫曼及哈夫曼编码实现:https://blog.csdn.net/wtfmonking/article/details/17150499#转载 2018-05-05 10:57:43 · 549 阅读 · 0 评论 -
二叉树的前中后序遍历(栈实现)
class TreeNode{public: TreeNode* leftNode; TreeNode* rightNode; int val; TreeNode(){ val = 0; leftNode = rightNode = NULL; }};vector<int> preorderTraversal(TreeNode *root) { vecto...原创 2018-05-13 15:44:53 · 1603 阅读 · 1 评论 -
二叉查找树
//二叉查找树数据结构 typedef struct Btree { int data; Btree *left; Btree *right; }*PBTree; //创建二叉查找树,返回树的根节点 PBTree CreateBTree(int *array,int n) { PBTree root=new Btree...转载 2018-05-26 20:00:50 · 130 阅读 · 0 评论 -
冒泡排序、插入排序、直接插入、折半插入和希尔排序
排序转载 2016-11-04 13:41:36 · 276 阅读 · 0 评论 -
郝斌---静态二叉树
#include#includestruct BTNode{ char data; struct BTNode* pLchild;//p是指针、L是左、child是孩子 struct BTNode* pRchild;};struct BTNode* createBTree(void);void PreTraverseBTree(struct BTNode* pT);vo原创 2016-11-23 10:42:36 · 298 阅读 · 0 评论 -
串的链式表示
#include #include #include #include "LinkString.h"void main(){ LinkString S1, S2, S3, Sub; char *str1 = "Welcome to"; char *str2 = " Data Structure"; char *str3 = "Computer Architec原创 2016-11-19 19:42:01 · 615 阅读 · 0 评论 -
非循环单链表
郝斌老师----#include#include#includetypedef struct Node{ int data; //数据域 struct Node *pNext;//指针域}Node,*pNode;//函数声明pNode create_list();void traverse_list(pNode pHead);bool is_empty(pNode pH原创 2016-11-09 15:52:07 · 397 阅读 · 0 评论 -
栈的构造
郝斌老师---/* 了解栈的构造方法 */ #include #include #include typedef struct Node { int data; struct Node * pNext; }NODE, * PNODE; typedef struct Stack { PNODE pTop;原创 2016-11-09 15:53:33 · 311 阅读 · 0 评论 -
单链表实例2
#include #include #include #define LISTSIZE 100typedef int DataType;typedef struct Node{ DataType data; struct Node *next;}LinkNode, *LinkList;#include "LinkList.h"//将链表A和B的元素合并到C中的函数声明v原创 2016-10-30 17:12:29 · 343 阅读 · 0 评论 -
顺序表实例2
#include #include #define LISTSIZE 100typedef int DataType;typedef struct { DataType list[LISTSIZE]; int length;}SeqList;#include "SeqList.h"/*合并顺序表 A 和 B 到 C 的函数声明*/void MergeList(SeqList原创 2016-10-30 17:10:45 · 341 阅读 · 0 评论 -
单链表实例1
#include #include #include typedef int DataType;typedef struct Node{ DataType data; struct Node *next;}LinkNode, *LinkList;#include "LinkList.h"//删除A中出现B的元素的函数声明void DelElem(LinkList A, L原创 2016-10-30 17:11:34 · 309 阅读 · 0 评论 -
栈---括号配对
#include #include #include #include typedef char DataType;#include int Match(DataType e, DataType ch);void main(){ LinkStack S; char *p; DataType e; DataType ch[60]; InitStac原创 2016-11-16 16:24:05 · 186 阅读 · 0 评论 -
栈---行编辑程序
#include #include #include #include typedef char DataType;#include "SeqStack.h"void LineEdit();void main(){ LineEdit();}void LineEdit() // 行编辑程序{ SeqStack S; char ch;原创 2016-11-16 16:26:11 · 463 阅读 · 0 评论 -
顺序表实例1
#include#define LISTSIZE 100typedef int DataType;typedef struct{ DataType list[LISTSIZE]; int length;}SeqList;#include "SeqList.h"void DelElem(SeqList *A, SeqList B);void main(){ int i, j,原创 2016-10-30 17:08:51 · 315 阅读 · 0 评论 -
顺序队列
#includetypedef char DataType;#include "SeqQueue.h"void main(){ SeqQueue Q; char str[] = "ABCDEFG"; int i, length=8; char x; InitQueue(&Q); for (i = 0; i < length; i++) { EnQueue(&Q, str原创 2016-11-16 16:36:22 · 169 阅读 · 0 评论 -
顺序循环队列
#include#define QUEUESIZE 60typedef char DataType;typedef struct Squeue{ DataType queue[QUEUESIZE]; int front, rear; int tag; //队列空满的标志}SCQueue;/*顺序循环队列初始化*/void InitQueue(SCQueue *SC原创 2016-11-16 16:38:26 · 377 阅读 · 0 评论 -
链式队列
#include#include#include#includetypedef char DataType;#include "LinkStack.h"#include "LinkQueue.h"void main(){ LinkQueue LQ1, LQ2; LinkStack LS1, LS2; char str1[] = "abdfdba"; char str2原创 2016-11-16 16:41:44 · 203 阅读 · 0 评论 -
顺序栈
/*将元素a,b,c,d,e依次入栈,然后将d和e出栈,再将f和g进栈,最后将元素全部进栈,并将元素按照出栈次序输出*/ #include #includetypedef char DataType;#include "SeqStack.h"void main(){ SeqStack S; int i; DataType a[] = {'a','b','c','d原创 2016-11-04 14:39:10 · 223 阅读 · 1 评论 -
链栈的应用
#include#include#include//typedef int DataType;typedef struct node{ DataType data; struct node *next;}LstackNode,*LinkStack;/*链栈初始化操作*/void InitStack(LinkStack *top){ if ((*top = (LinkSt原创 2016-11-13 11:03:26 · 393 阅读 · 0 评论 -
顺序栈共享
main.c函数:/*设有两个栈S1和S2都采用顺序栈的方式存储,并且共享一个存储区*/#include#include#define STACKSIZE 100 typedef int DataType;#include "SSeqStack.h"void main( ){ SSeqStack S; int i; DataType a[] = { 'a', 'b', 'c原创 2016-11-13 10:11:46 · 586 阅读 · 0 评论 -
顺序串
#include#include "SeqString.h"void main(){ SeqString S1, S2, Sub; char ch[MAXLEN]; printf("请输入第一个字符串:\n"); gets(ch); StrAssign(&S1, ch); printf("输出串S1:"); StrPrint(&S1); printf("请输入第二个字符串:原创 2016-11-19 19:38:49 · 500 阅读 · 0 评论 -
堆串的基本运算
#include#include#include#include "HeapString.h"void main(){ HeapString S1, S2, Sub; char ch[50]; InitString(&S1); InitString(&S2); InitString(&Sub); printf("请输入第一个字符串:"); gets(ch); S原创 2016-11-19 19:40:40 · 786 阅读 · 0 评论 -
串的模式匹配
#include#include#include#includeint B_FIndex(SeqString S, int pos, SeqString T,int *count);int KMP_Index(SeqString S, int pos, SeqString T, int next[],int *count);void GetNext(SeqString T, int原创 2016-11-19 19:43:10 · 297 阅读 · 0 评论 -
哈希链表查找
#define MAX 10 //链表数据结构typedef struct list { int data; list *next;}*pList;list hashtable[MAX]; ///链式法解决地址冲突,MAX个带头节点的hash链表//除留取余法int hashFunc(int n) { return n%MAX;}//创建ha...转载 2018-05-26 20:04:25 · 987 阅读 · 0 评论