![](https://img-blog.csdnimg.cn/5dccb4678d214697b6de3f9e468d5478.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
大二上数据结构
文章平均质量分 51
大二上数据结构课程部分代码
霸时斌子
哦(´-ω-`)
展开
-
绪论:细节=初始的东西
初始化及基本操作首先是C的自定义常量:然后是C++的自定义常量:realloc函数的使用:后续知识点、、、、首先是C的自定义常量:const TRUE=1; //真const FALSE=0; //假const OK=1; //算法正常完成的状态const ERROR=0 //算法执行出错的状态const INFEASIBLE=-1; //算法不可实现的状态const OVERFLOW=-2; //存储溢出的状态 typedef int Status ; //Status作为原创 2021-11-17 20:29:23 · 320 阅读 · 0 评论 -
一:线性表:顺序表之数组和指针的初始化操作
初始化及基本操作首先是一些常量的定义:定义线性顺序表的结构体 :构造一个空的线性表L销毁线性表L将L重置为空表用e返回L中第i个数据元素的值在L中第i个位置之前插入新的数据元素e,L的长度加1删除L的第i个数据元素,并用e返回其值,L的长度减1输出得到最大值得到最小值表元素逆置排序.合并首先是一些常量的定义:对于一些常量的定义,可以到函数使用时,返回值可以用设定的符号进行返回,这样有利于后面主函数进行判断是否初始操作成功,防止异常的发生。#include <stdio.h>#inc原创 2021-09-27 15:02:05 · 1021 阅读 · 0 评论 -
一:线性表:链表的初始化操作及应用
内容节点结构InitList(*L):初始化一个线性表ListEmpty(L):判断是否为空表ClearList(*L):清空线性表GetElem(L,i,*e):将表中的第i个元素,返回给eLocateElem(L,e):查找表中是否有与e相等元素ListInsert(L,i,e):在线性表的第i个位置插入元素eListDelete(*L,i,*e):删除线性表中的第i个元素,并将值返回给eListLength(L): 返回线性表元素的个数头插法插入元素尾插法求两个线性表La和Lb的并集求两个线性表La和原创 2021-11-17 23:16:33 · 6185 阅读 · 3 评论 -
二:栈的初始化操作及应用
内容栈的顺序结点结构初始化空栈: InitStack(&S)销毁栈: DestroyStack(&S)清空栈: ClearStack(&S)判栈空: StackEmpty(S)求栈长: StackLength(S)读栈顶: GetTop(S, &e)进栈: Push(&S, e)出栈: Pop(&S, &e)链式栈的结点结构入栈出栈数值转换括号匹配问题迷宫问题表达式求值问题栈的顺序结点结构typedef struct { in原创 2021-11-18 14:31:56 · 4817 阅读 · 1 评论 -
二:队列的初始化操作及应用
内容顺序队列的结点结构初始化空队列: InitQueue(&Q)销毁队列: DestroyQueue(&Q)清空队列: ClearQueue(&Q)判栈队列: StackQueue(Q)求队列长: QueueLength(Q)入队: EnQueue(&Q, e)出队: DeQueue(&Q, &e)链式队列结构入队出队顺序队列的结点结构#define MAXQSIZE 100typedef struct { QElemType原创 2021-11-18 14:36:40 · 715 阅读 · 0 评论 -
三:二叉树的初始化操作及应用
内容链式存储结构初始化空二叉树 InitBiTree(&T)销毁二叉树 DestroyBiTree(&T)创建二叉树 CreateBiTree(&T, definition)清空二叉树 ClearBiTree(&T)判断空二叉树 BiTreeEmpty(T)求二叉树深度 BiTreeDepth(T)求双亲 parent(T, e)求左孩子 LeftChild(T, e)求右孩子 RightChild(T, e)求左兄弟 LeftSibling(T, e)原创 2021-11-20 20:50:41 · 2862 阅读 · 0 评论 -
三:线索二叉树的初始化操作及应用
内容双向线索链表为二叉树的存储结构时的中序遍历中序遍历建立中序线索化二叉链表递归中序线索化二叉树双向线索链表为二叉树的存储结构时的中序遍历Status InorderTraverse_Thr(BiThree T, Status (*Visit)(TElemType e)){ //T为头结点指针,中序遍历带头结点的线索二叉树Tp=T->lchild; //p指向根结点while(p!=T) { //空树或遍历结束时,p==T while(p->LTag==link) p=原创 2021-11-20 21:07:35 · 229 阅读 · 0 评论 -
三:树的初始化操作及应用
内容树的双亲表示法孩子表示法孩子兄弟表示法:即转化为二叉树的方式哈夫曼树的表示构造哈夫曼树,并编码树的双亲表示法#define MAX_TREE_SIZE 100typedef struct PTNode{ TElemType data; int parent;}PTNode;typedef struct { PTNode nodes[MAX_TREE_SIZE]; int r,n; //根位置和结点数目} Ptree;孩子表示法typedef原创 2021-11-20 22:06:35 · 573 阅读 · 0 评论 -
四:图-邻接矩阵的初始化操作及应用
内容种类储存边存储图判断顶点在vexs中的下标位置创建图创建具体图或网创建有向图DG创建有向网DN创建无向图UDG创建无向网UDN种类//------枚举图的种类---typedef enum {DG,DN,UDG,UDN} GraphKind;储存边typedef struct ArcCell{ int adj; //0-1或者权值; // InfoType *info; //还不知道用来干啥??}ArcCell,AdjMatrix[MAX_VERTEX_NUM][MA原创 2021-11-20 22:43:41 · 1785 阅读 · 0 评论 -
四:图-邻接表的初始化操作及应用
内容表结点的形式顶点的存储形式图的结构:两部分找到顶点的下标位置创建图创建网搜索算法:深度创建无向图深度优先遍历广度优先遍历表结点的形式typedef struct ArcNode{ int adjvex; //邻接点的下标 struct ArcNode *nextarc; // InfoType *info;}ArcNode;顶点的存储形式typedef struct VNode{ char data; ArcNode原创 2021-11-20 22:34:25 · 656 阅读 · 0 评论 -
四:图的最小生成树和拓扑排序
内容最小生成树:普里姆(Prim)算法拓扑排序算法最小生成树:普里姆(Prim)算法//-----------首先建立好UDN 无向网带权-----用邻接矩阵创建------------void MiniSpanTree_PRIM(MGraph G,char u){ int k = LocateVex(G,u); for (int j=0; j<G.vexnum; j++) //初始化closedge数组 if(j!=k) closedge[j]原创 2021-11-20 22:19:14 · 96 阅读 · 0 评论 -
五:查找表的初始化操作及应用
内容结点类型创建表: Create(&ST,n)销毁表: Destroy(&ST)读表元: Get(ST,pos)插入: Insert(&ST,e)删除: Delete(&ST,K)顺序查找: Search(ST,K)折半查找索引顺序查找结点类型typedef struct{ ElemType *elem; //数组的基地址 int length; //表中记录的个数}SSTable;创建表: Create(&ST原创 2021-11-21 14:10:32 · 1318 阅读 · 0 评论 -
五:二叉排序树的初始化操作及应用
内容树形结构:二叉排序树(、链表)查找的非递归算法二叉排序树的生成二叉排序树的删除操作树形结构:二叉排序树(、链表)查找的非递归算法Status BSTSearch(BiTree bt, KeyType K, BiTree &p, BiTree &f){ //在根为bt的二叉排序树上查找键值等于K的记录 //查找成功,用指针p指向目标;f指向目标的双亲,f初值为NULL p=bt; while(p){ if(K<p->key){f=p;p=原创 2021-11-21 14:13:21 · 784 阅读 · 0 评论 -
六:排序的初始化操作及应用
内容直接插入排序二路插入排序希尔排序冒泡排序快速排序直接插入排序结点,及整体#define MAXSIZE 200typedef struct{ //结点类型 KeyType key; InfoType otherinfo;}RecordType;typedef struct{ //排序表类型 RecordType R[MAXSIZE+1]; int length;}SqList; 直接插入排序具体算法void InsertSort( SqL原创 2021-11-24 01:04:59 · 451 阅读 · 0 评论 -
实验考试总结实验性
内容线性顺序表线性链表栈队列二叉树图静态查找二叉排序树哈希表排序线性顺序表#include<bits/stdc++.h>using namespace std;typedef struct{ int *elem; int length; int listsize;}SqList;void Init_List(SqList &L){ L.elem=(int *)malloc(sizeof(int)*20); L.length=0;原创 2021-11-28 22:06:17 · 603 阅读 · 0 评论 -
课堂作业总结性实验
内容创建两个有序链表L1,L2来表达多项式,然后相加得到L3汉诺塔问题(三个碟子的搬运)将折半查找的非递归算法更改成递归算法创建两个有序链表L1,L2来表达多项式,然后相加得到L3思路:首先,先定义结点类型,创建初始化函数(在初始化函数里面进行多项式的键盘系数和指数的输入,)然后建立合并函数(进行两个多项式链表的合成:通过指数的大小进行三种情况的判断:> < =.、进而进行相应的操作,)最终在主函数里进行调用。#include <stdio.h>#include <原创 2021-12-26 00:11:52 · 137 阅读 · 0 评论