数据结构
数据结构基本操作的代码
挑灯夜未央
一杯酒,一根烟,一行代码写一天。
展开
-
数据结构顺序查找的实现
1.一般线性表的顺序查找typedef struct{ //查找表的数据结构(顺序表) int *elem; //动态数组基址 int TableLen; //表的长度}SSTable;//顺序查找int Search_seq(SSTable ST, int key){ int i; for(i=0; i<ST.TableLen && ST.elem[i]!=key; ++i);原创 2021-08-22 18:49:15 · 829 阅读 · 0 评论 -
数据结构二叉排序树的查找
1.二叉排序树的查找(1)非递归方式(最坏空间复杂度O(1))typedef struct BSTNode{ int key; struct BSTNode *lchild, *rchild;}BSTNode, *BSTree;//在二叉排序树中查找值为key的结点BSTNode *BST_Search(BSTree_T, int key){ while(T!=NULL && key!=T->key){ //若树空或等于根结原创 2021-08-19 18:07:24 · 1099 阅读 · 0 评论 -
数据结构二叉树的存储结构
1.双亲表示法(顺序存储)#define MAX_SIZE 100 //树中最多结点数typedef struct{ int data; int parent; //双亲位置域}PTNode;typedef struct{ PTNode nodes[MAX_TREE_SIZE]; int n; //结点数}PTree;2.孩子表示法(顺序+链式存储)struct CTNode{原创 2021-08-17 18:28:51 · 162 阅读 · 0 评论 -
数据结构二叉树层序遍历
//二叉树的结点(链式存储)typedef struct BiTNode{ char data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//链式队列结点typedef struct LinkNode{ BiTNode *data; struct LinkNode *next;}LinkNode;typedef struct{ LinkNode *front, *rear; //队头.原创 2021-08-17 17:47:42 · 89 阅读 · 0 评论 -
数据结构二叉树先序遍历
1.先序遍历typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//先序遍历void PreOrder(BiTree T){ if(T!=NULL){ visit(T); //访问根结点 PreOrder(T->lchild); //递归遍历左子树 PreO原创 2021-08-17 17:33:09 · 303 阅读 · 0 评论 -
数据结构二叉树的链式存储
typedef struct BiTNode{ int data; struct BiTNode *lchild, *rchild;}BiTNode, *BiTree;//定义一棵空树BiTree root = NULL;//插入根节点root = (BiTree)malloc(sizeof(BiTNode));root->data = {1};root->lchild = NULL;root->rchild = NULL;//插入新结点BiTN.原创 2021-08-16 18:00:13 · 138 阅读 · 0 评论 -
数据结构栈在括号匹配中的应用
#define MaxSize 10typedef struct{ char data[MaxSize]; int top;}SqStack;//初始化栈void InitStack(SqStack &S)//判断栈是否为空bool StackEmpty(SqStack S)//新元素入栈bool Push(SqStack &S, char x)//栈顶元素出栈,用x返回bool Pop(SqStack &S, char &x)...原创 2021-08-13 20:31:17 · 85 阅读 · 0 评论 -
数据结构队列的顺序实现(循环队列)
。。。#define MaxSize 10 //定义队列中元素的最大个数typedef struct{ int data[MaxSize]; //用静态数组存放队列元素 int front,rear; //队头指针和队尾指针}SqQueue;//初始化队列void InitQueue(SqQueue &Q){ Q.rear = Q.front = 0; //初始化队头、队尾指针指向原创 2021-08-13 20:06:42 · 132 阅读 · 0 评论 -
数据结构顺序栈的定义
数据结构顺序栈:进栈、出栈、读栈等操作#define MaxSize 10 //定义栈中元素的最大个数typedef struct{ int data[MaxSize]; //静态数组存放栈中元素 int top; //栈顶指针}SqStack;//初始化栈void InitStack(SqStack &s){ S.top = -1; //初始化栈顶指针}//判断栈是否为空bool St原创 2021-08-13 16:25:48 · 644 阅读 · 0 评论 -
数据结构:循环链表
循环单链表typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;//初始化一个循环单链表bool InitList(LinkList &L){ L = (LNode *)malloc(sizeof(LNode)); //分配一个头结点 if(L==NULL) //内存不足,分配失败 return false; L-&原创 2021-08-11 18:56:17 · 66 阅读 · 0 评论 -
数据结构:双链表的基本操作(带头结点)
typedef struct DNode{ int data; struct DNode *prior,*next;}DNode, *DLinklist;//初始化双链表(带头结点)bool InitDLinkList(DLinklist &L){ L = (DNode *)malloc(sizeof(DNode)); //分配一个头结点 if(L==NULL) //内存不足,分配失败 retu...原创 2021-08-11 18:30:03 · 140 阅读 · 0 评论 -
数据结构:尾插法建立单链表
带头结点的头插法、尾插法1.头插法2.尾插法typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;//初始化单链表(带头结点)bool InitList(LinkList &L){ L = (LNode *) malloc(sizeof(LNode)); if(L==NUll) return false; L->next = NU原创 2021-08-11 17:58:39 · 2573 阅读 · 0 评论 -
数据结构单链表:按位查找、按值查找、求表的长度
111//按位查找,返回第i个元素(带头结点)bool ListInsert(LinkList &L, int i, int e){ if(i<0) return NULL; LNode *p; //指针p指向当前扫描到的结点 int j=0; //当前p指向的是第几个结点 p = L; //L指向头结点 while(p!=NULL && j<原创 2021-08-10 19:08:58 · 1404 阅读 · 0 评论 -
数据结构单链表:按位序、指定结点的删除(带头结点)
按位序删除结点typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;bool ListDelete(LinkList &L, int i, int &e){ if(i<1) return false; LNode *p; //指针p指向当前扫描到的结点 int j=0; //当前p指向的是第几个结点原创 2021-08-10 18:27:46 · 1645 阅读 · 2 评论 -
数据结构单链表:指定结点的前插、后插操作
指定结点的前插操作typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;//在p结点之前插入元素ebool InsertPriorNode(LNode *p, int e){ if(p==NULL) return false; LNode *s = (LNode *)malloc(sizeof(LNode)); if(s==NULL)原创 2021-08-10 17:57:10 · 3883 阅读 · 0 评论 -
数据结构的单链表操作(不带头结点的按位序插入)
#include<stdio.h>typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;bool ListInsert(LinkList &L, int i, int e){ if(i<1) //判断插入位置是否在合理范围内 return false; if(i==1){ //插入第1个结点的操作与其它结点不.原创 2021-08-10 17:26:39 · 841 阅读 · 0 评论 -
数据结构的单链表操作(带头结点按位序插入)
#include<stdio.h>typedef struct LNode{ int data; struct LNode *next;}LNode, *LinkList;//在第i个位置插入元素e(带头结点)bool ListInsert(LinkList &L, int i, int e){ if(i<1) //判断插入位置是否在合理范围内 return false; LNode *p;.原创 2021-08-10 17:27:00 · 709 阅读 · 0 评论 -
数据结构线性表的静态、动态分配
#include<stdio.h>#define MaxSize 10 //定义最大长度typedef struct{ int data[MaxSize]; //用静态的“数组”存放数据元素 int length; //顺序表的当前长度}Sqlist; //顺序表的类型//初始化顺序表void InitList(SqList &L){ for(int i=0; i<MaxSize; i+.原创 2021-05-08 22:46:39 · 925 阅读 · 0 评论 -
数据结构线性表的基本操作(增删改查)
#include<stdio.h>#define MaxSize 10 //定义最大长度typedef struct{ int data[MaxSize]; //用静态的“数组”存放数据元素 int length; //顺序表的当前长度}Sqlist; //顺序表的类型//初始化顺序表void InitList(SqList &L){ for(int i=0; i<MaxSize; i+.原创 2021-05-13 08:42:39 · 575 阅读 · 0 评论