数据结构
文章平均质量分 75
为爱坚持
因为你是大学生,所以你什么也不是,你没有自豪的资本。现实不会给你颓废的时间
展开
-
二叉树的操作
#pragma once#include#include#includeusing namespace std;templateclass BinTree;templateclass BinTreeNode;typedef enum{L,R}Tag_Type;templatestruct stkNode{ BinTreeNode *ptr; Tag_Typ原创 2015-09-17 09:07:55 · 544 阅读 · 0 评论 -
树的孩子兄弟链表应用
孩子兄弟表示法采用链式存储结构,链表由一个数据域和两个指针域组成。其中,数据域 存放结点的数据信息,一个指针域用来指示结点的第一个孩子结点,另一个指针域用来指示结点的下一个兄弟结点。#include #include #include #include typedef int ElemType; typedef struct CSNode//孩子兄弟表示法类型定义原创 2015-07-28 20:32:28 · 1888 阅读 · 0 评论 -
二叉树的计数
二叉树的遍历也常常用来对二叉树进行计数。#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchi原创 2015-07-28 20:07:35 · 1241 阅读 · 0 评论 -
采用邻接矩阵创建图
采用邻接矩阵创建一个有向网N分析:图的创建主要利用输入的各个顶点,并存储到一个向量(一维数组)中,然后通过输入两个顶点及权重创建弧,利用二维数组表示,因此,利用邻接矩阵创建图的存储需要两个数组:一个一维数组和一个二维数组。#include#include#include#includetypedef char VertexType[4];typedef char InfoPtr;t原创 2015-08-08 21:09:12 · 4978 阅读 · 0 评论 -
哈弗曼编码
#include #include #include #define MY_STRMAX 100 #define infinity 1000000 typedef struct { unsigned int weight; //深度 char ch; //结点数值 unsi原创 2015-07-28 20:43:04 · 882 阅读 · 0 评论 -
函数指针的说明
刚刚发的博客没有保存截图,很不好意思,现在我重新发一次。原创 2015-07-15 09:50:46 · 616 阅读 · 0 评论 -
函数指针作为函数参数,实现冒泡排序的升序排序和降序排序
#include#define N 10//定义数组元素个数int Ascending(int a,int b);//升序排列的函数声明int Descending(int a,int b);//降序排列的函数声明void swap(int*,int*);//交换数据的函数声明void BubbleSort(int a[],int n,int (*compare)(int,int));原创 2015-07-15 09:43:30 · 9865 阅读 · 0 评论 -
函数指针的说明
指针可以指向变量、数组,也可以指向函数,函数指针就是指向函数的指针。函数名实际是程序在内存中的起始地址。而指向函数的指针可以把地址传递给函数,也可以从函数返回给指向函数的指针。例如这个例子:通过一个函数求两个数的和,并通过函数指针调用该函数。#includeint sum(int a,int b);//求和函数的声明void main(){ int a,b; int (*fun)(int原创 2015-07-15 08:39:02 · 876 阅读 · 0 评论 -
二叉树的遍历的应用
创建如下图所示的二叉树:#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild;原创 2015-07-27 21:37:55 · 1765 阅读 · 0 评论 -
模式匹配应用
比较经典的Brute-Force算法与KMP算法的效率的优劣。#include #include #include #define MAXSIZE 60 typedef struct { char str[MAXSIZE]; int length; }SeqString; int B_FIndex(SeqString原创 2015-07-27 21:20:12 · 1025 阅读 · 0 评论 -
树和二叉树的应用
#include #include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild; }Bit原创 2015-07-28 20:51:01 · 694 阅读 · 0 评论 -
线索二叉树的遍历应用
线索二叉树的遍历,就是在已经建立后的线索二叉树中,根据线索查找结点的前驱和后继。利用在线索二叉树中查找结点的前驱和后继的思想,遍历线索二叉树。#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef enum { Link,/*指向孩子结点*/Thread/*原创 2015-07-28 20:18:36 · 1178 阅读 · 0 评论 -
指向函数的指针数组的用法
声明一个指向函数的指针数组,并通过指针调用函数。#includevoid f1();//函数f1的声明void f2();//函数f2的声明void f3();//函数f3的声明void main(){ void (*f[3])()={f1,f2,f3};//指向函数的指针数组的声明 int flag; printf("请输入一个1,2或者3.输入0退出.\n"); scanf(原创 2015-07-15 22:28:25 · 848 阅读 · 0 评论 -
二叉树的基本运算
//二叉树的初始化操作。二叉树的初始化需要将指向二叉树的根结点指针置为空:void InitBitTree(BiTree *T)//二叉树的初始化操作{ *T=NULL;}//二叉树的销毁操作。如果二叉树存在,将二叉树存储空间释放:void DestroyBitTree(BiTree *T)//销毁二叉树操作{ if(*T)//如果是非空二叉树 { if((*T)->lch原创 2015-07-25 21:16:32 · 1667 阅读 · 0 评论 -
用指针数组保存字符串并将字符元素打印输出
指针数组原创 2015-07-22 21:10:27 · 7422 阅读 · 1 评论 -
用指针引用数组元素并打印输出
数组指针原创 2015-07-22 21:38:15 · 1231 阅读 · 1 评论 -
指向结构体的指针
运用指向结构体数组的指针输出学生信息说明:指针指向结构体数组,就得到了该结构体数组的起始地址。通过该地址可以访问结构体数组中的所有成员变量。其中,指向结构体的指针的算术运算与 指向数组的指针的用法相似。#include#define N 10//结构体类型及变量的定义,初始化struct student{ char *number; char *name; char sex;原创 2015-07-22 22:58:44 · 1600 阅读 · 0 评论 -
用指针引用数组元素并打印输出
昨天的程序运行结果没有上传正确,现在重新发一次。很不好意思原创 2015-07-21 07:50:36 · 1539 阅读 · 0 评论 -
用指针引用数组元素并打印输出
指针与数组结合进行的运算原创 2015-07-20 18:31:39 · 3195 阅读 · 0 评论 -
二叉树的存储表示与实现
二叉树的顺序存储完全二叉树的存储可以按照从上到下,从左到右的顺序依次存储在一维数组中。完全二叉树的顺序存储如图所示: 如果按照从上到下,从左到右的顺序把非完全二叉树也同样的编号,将结点依次存放在一维数组中,为了能够正确反映二叉树中结点之间的逻辑关系,需要在一维数组中将二叉树中不存在的结点位置空出。 顺序存储对于完全二叉树来说是原创 2015-07-20 17:51:11 · 3204 阅读 · 0 评论 -
链式队列
编程判断一个字符序列是否是回文。回文是指一个字符序列以中间字符为基准两边字符完全相同,即顺着看和倒着看是相同的字符序列。如字符序列“ABCDCBA”就是回文,而字符序列“ABCBCAB”,就不是回文。#include//包含输出函数#include//包含退出函数#include//包含字符串长度函数#include//包含内存分配函数typedef char DataType;//类型定原创 2015-07-20 10:34:28 · 944 阅读 · 0 评论 -
指针函数
指针函数是指函数的返回值是指针类型的函数。一个函数的返回值可以是整数,实型和字符类型,也可以是指针类型。指针类型的定义形式举例如下:float* fun(int a,int b);其中,fun是函数名,前面的“*”说明返回值的类型是指针类型,因为前面的类型标识是float,所以返回的指针指向浮点型。该函数有两个参数,参数类型是整型。通过一个题目学校指针函数的用法。例如:假设若干个学原创 2015-07-17 23:14:27 · 2256 阅读 · 0 评论 -
二叉树的输出
例如:按树输出如下:#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild;原创 2015-07-27 21:48:56 · 2298 阅读 · 0 评论 -
串的模式匹配
在串的各种操作中,串的模式匹配是经常用到的一个算法。串的模式匹配也称为子串的定位操作,即查找子串在主串中出现的位置。1.经典的模式匹配算法Brute-Force。2.KMP算法。#include #include #include #define MAXSIZE 60 typedef struct { char ch[MAXSIZE];原创 2015-07-27 21:11:03 · 1021 阅读 · 0 评论 -
链表栈的基本操作
#ifndef _STACKLIST_H #define _STACKLIST_H #include #include using namespace std; #define ElemType int typedef struct Node { ElemType data; struct Node *n原创 2015-05-07 23:32:56 · 631 阅读 · 0 评论 -
双向循环链表的基本操作
#ifndef _DCLIST_H #define _DCLIST_H #include #include using namespace std; typedef int ElemType; typedef struct Node { ElemType data; struct Node *ne原创 2015-05-07 22:56:06 · 683 阅读 · 0 评论 -
双向链表基本操作
#ifndef _DLIST_H #define _DLIST_H #include #include using namespace std; #define ElemType int typedef struct Node { ElemType data; struct Node *next;原创 2015-05-03 12:06:16 · 427 阅读 · 0 评论 -
循环单链表的基本操作
#ifndef _CLIST_H #define _CLIST_H #include #include using namespace std; #define ElemType int typedef struct Node { ElemType data; struct Node *next; }Node, *PNod原创 2015-05-03 11:35:55 · 612 阅读 · 0 评论 -
顺序表的基本操作
头文件#ifndef _SEQLIST_H#define _SEQLIST_H#include#includeusing namespace std;#define ElemType int#define SEQLIST_DEFAULT_SIZE 10typedef struct SeqList{ ElemType *base; size_t length; s原创 2015-05-03 10:51:15 · 476 阅读 · 0 评论 -
单链表的基本操作
头文件#ifndef _LIST_H #define _LIST_H #include #include using namespace std; #define ElemType int typedef struct Node { ElemType data; struct Node *next; }Node, *PN原创 2015-05-03 10:26:57 · 620 阅读 · 0 评论 -
利用栈的基本操作编写一个行编辑程序,当前一个字符有误时,输入#消除,当前面一行有误时,输入@消除前面行的字符序列
#include #include #include #define STACKSIZE 100 typedef char ElemType; typedef struct { ElemType stack[STACKSIZE]; int top; }SeqStack; void InitSt原创 2015-05-09 12:12:04 · 1017 阅读 · 0 评论 -
利用栈的基本操作,将十进制数转换为八进制数
#include #include #include #define STACKSIZE 100 typedef int ElemType; typedef struct { ElemType stack[STACKSIZE]; int top; }SeqStack; void InitStack原创 2015-05-09 12:04:47 · 19017 阅读 · 6 评论 -
顺序栈的基本操作
#ifndef _SEQSTACK_H #define _SEQSTACK_H #include #include using namespace std; typedef int ElemType; #define STACK_INIT_SIZE 8 typedef struct Stack { Ele原创 2015-05-07 23:19:14 · 500 阅读 · 0 评论 -
直接插入排序,折半插入排序,2-路插入排序,希尔排序
#includeusing namespace std;#define MAX 20typedef int SqList[MAX];void InsertSort(SqList &L,int n)//直接插入排序{ for(int i = 2;i < n; ++i)//从下标为2开始 { if(L[i]<=L[i-1]) { L[0]=L[i];//哨兵位赋值原创 2015-06-16 14:21:52 · 852 阅读 · 0 评论 -
基数排序C语言代码实现
#includetypedef struct{ int num; int next;}slcell; //静态链表的结点类型#define M 11int f[M];int e[M];int head=0;void distribute(slcell *a,int w){ int i; int last; for(i=0;i<10;i++)转载 2015-06-26 09:11:15 · 5077 阅读 · 0 评论 -
二叉树的链式存储
#include #include #include #define MAXSIZE 100 typedef char ElemType; typedef struct Node { ElemType data; struct Node *lchild; struct Node *rchild; }*BitTree,BitNod原创 2015-07-27 21:25:49 · 906 阅读 · 1 评论 -
把数组中的n个元素的值分别扩大5倍,要求数组名作为参数。
通过把数组名作为参数传递,实际上是把数组的地址传递给形式参数。这样在被调用函数中就可以对整个数组进行操作了,将数组名作为参数传递,调用函数和被调用函数都是对占同一块内存单元的数组进行操作。#include#define N 10void MulArray1(int *x,int n);//数组名作为参数的函数原型void MulArray2(int *aPtr,int n);//指针作为参数原创 2015-07-25 22:08:50 · 1960 阅读 · 0 评论 -
顺序队列的表示
顺序队列的入队操作和出队操作原创 2015-07-25 09:56:38 · 1015 阅读 · 0 评论 -
二叉树的遍历实现
二叉树的先序遍历//先序遍历二叉树的递归实现void PreOrderTraverse(BiTree T){ if(T) { printf("%2c",T->data);//访问根结点 PreOrderTraverse(T->lchild);//先序遍历左子树 PreOrderTraverse(T->rchild);//先序遍历右子树 }}//二叉树的先序遍历原创 2015-07-25 20:53:05 · 864 阅读 · 1 评论 -
链串的基本运算
#include #include #include #define CHUNKSIZE 10 #define stuff '#' typedef struct Chunk { char ch[CHUNKSIZE]; struct Chunk *next; }Chunk;//串的结点类型定义 typedef struct {原创 2015-07-26 09:11:07 · 2189 阅读 · 0 评论