数据结构
崽崽张不是奶t
崽崽张
展开
-
【树的遍历】
先序遍历如果树不空{建栈,根节点入栈,只要栈不空{借助p出栈栈顶元素并访问,如果右孩子存在右孩子入栈,左孩子存在左孩子入栈}}void preorder(BTNode *bt){ if(bt!=NULL) { BTNode *Stack[maxsize]; int top=-1;//定义并初始化一个栈 BTNode *p;//遍历指针 Stack(++top)=bt; while(top!=-1) { p=Stack[top--]; printf("%原创 2022-04-11 17:28:55 · 183 阅读 · 0 评论 -
数据结构十套卷
数据结构十套卷代码原创 2021-12-30 12:19:19 · 820 阅读 · 2 评论 -
图的性质总结
图的性质总结原创 2021-12-30 12:18:49 · 587 阅读 · 0 评论 -
树的性质总结
树的性质总结原创 2021-12-30 12:18:05 · 686 阅读 · 0 评论 -
中缀表达式求值
计算中缀表达式 从左至右扫描 遇到数字入结果栈,遇到左括号直接入操作符栈,遇右括号则从结果栈出栈 两个元素x,y 从操作符栈出栈一个元素执行y op x,并将结果入结果栈直至运算符栈栈顶元 素是左括号,然后将左括号丢掉;遇到操作符,若当前优先级高于栈顶元素优先级,则直接 入栈,否则循环从结果栈出栈两个元素x,y 从操作符栈出栈一个元素执行y op x,并将结果入结 果栈;计算后缀表达式从左至右扫描遇到数字入栈 遇到操作符 从栈中依次出栈两个元素x,y 执行y op x;并将结果入栈计算原创 2021-09-11 11:19:05 · 72 阅读 · 0 评论 -
中缀转后缀
#include<stdio.h>#define MAXSIZE 100int getPriority(char op)//得到优先级{ if(op=='+'||op=='-') return 0; else if(op=='*'||op=='/') return 1;}int compare(char op1,char op2)//比较优先级 op1为当前,op2为栈顶 { int i=getPriority(op1); int j=getPriority(op原创 2021-09-06 23:56:48 · 103 阅读 · 0 评论 -
括号匹配算法
#include<stdio.h>#define MAXSIZE 100int match(){ char str[MAXSIZE]; printf("请输入字符串"); scanf("%s",str); char *s=str;//用指针s遍历字符串数组中的字符 char S[MAXSIZE]; int top=-1; while(*s!=NULL) { if(*s=='('||*s=='['||*s=='{') { S[++top]=*s; s++原创 2021-09-06 21:44:52 · 124 阅读 · 0 评论 -
栈和队列总结(1800)
队列(1)若用单链表来表示队列,最适合的是带尾指针的循环链表;(2)最适合的队列链表结构是双向循环链表;(3)用设置尾指针的循环链表表示队列,出对入队操作都为O(1)(4)在链队中,即使不设置尾指针也能进行入队操作(从队头指针可以查到队尾)栈(1)栈在递归调用、子程序调用和表达式求值中应用;(2)一个递归算法必须包括终止条件和递归部分;(3)栈是实现过程和函数等子程序所必需的结构(4)消除递归不一定要使用栈;(5)n个元素依次进栈,出栈共有Cn种方式,Cn=[1/(n+1)](2n!)/原创 2021-09-02 14:58:46 · 537 阅读 · 0 评论 -
线性表总结(1800)
typedef struct LNode{ int data; struct LNode *next;}LNode;带头结点单链表逆置/*p负责将元素从旧链表中转入新链表,q负责标记旧链表中下一个要被转移的元素,在p转移元素时“看家”,等p将元素插入新链表之后,将q赋值给p,让p“回家”*/void reverse(LNode *L){ LNode *p,*q; p=L->next; L->next=NULL; while(p!=NULL) { q=p->原创 2021-09-01 10:15:07 · 414 阅读 · 0 评论 -
链队基本操作
#include<stdio.h>#include<stdlib.h>队列结点类型定义typedef struct QNode { int data; struct QNode *next;}QNode;队列结构类型定义typedef struct LQueue{ QNode *front; QNode *rear;}LQueue;链队初始化void init(LQueue *&Q){ Q=(LQueue*)malloc(sizeof(原创 2021-08-23 10:28:31 · 196 阅读 · 0 评论 -
一般配置顺序队列基本操作
配置:rear指向队尾元素 front的下一个位置为队头元素#include<stdio.h>#define MAXSIZE 100结构体定义typedef struct LNode{ int data[MAXSIZE]; int front,rear;}LNode;队列初始化void init(LNode &L){ L.front=0; L.rear=0;}元素入队void enqueue(LNode &L,int x){ L.rear原创 2021-08-23 08:56:20 · 124 阅读 · 0 评论 -
带头结点单链表原地逆置
结构类型定义typedef struct LNode{ int data; struct LNode *next;}LNode;链表原地逆置void converse(LNode *L){ LNode *p,*q; p=L->next; L->next=NULL; while(p) { q=p;//将p赋给q; p=p->next;//p指针后移 q->next=L->next;//q指针头插插入头指针之后 L->next=q;原创 2021-08-18 20:10:38 · 390 阅读 · 0 评论 -
一个带头结点的单链表,找出最小值,若最小值是奇数则将其删除
#include<stdio.h>#include<stdlib.h>结构体定义typedef struct LNode{ int data; struct LNode *next;}LNode,LinkList;尾插法建表void createR(LNode *&L,int n){ LNode *r,*s; L=(LNode*)malloc(sizeof(LNode)); L->next=NULL;//建立头指针 r=L;//r始终指向原创 2021-08-18 15:26:35 · 1254 阅读 · 0 评论 -
栈的基本操作
#include<stdio.h>#include<stdlib.h>#define maxsize 100 顺序栈结构体定义typedef struct SqStack{ int data[maxsize]; int top;}SqStack;链栈结构体定义typedef struct LNode{ int data; struct LNode *next;}LNode;顺序栈初始化void InitSqStack(SqStack &S原创 2021-08-15 08:50:11 · 142 阅读 · 0 评论 -
排序(链表)
单链表结构体定义typedef struct SqList{ int *elem; int length;}SqList;初始化线性表void InitSq(SqList &L){ L.elem=(int*)malloc(sizeof(int)); if(!L.elem) exit(-1); L.length=0;}建表void create(SqList &L,int n){ int e; for(int j=0;j<n;j++) {原创 2021-08-14 21:03:16 · 275 阅读 · 0 评论 -
单链表的创建及基本操作
结构体定义typedef struct LNode{ int data; LNode *next;}LNode;尾插法建表void createR(LNode *&L,int n){ LNode *r,*s; L=(LNode*)malloc(sizeof(LNode)); r=L; for(int i=0;i<n;i++) { s=(LNode*)malloc(sizeof(LNode)); scanf("%d",&s->data); s原创 2021-08-12 09:07:14 · 327 阅读 · 0 评论 -
顺序表的操作升级版
合并两个有序顺序表int mergeSqList(SqList La,SqList Lb,SqList &Lc)//把递增的表La和Lc合并成新的Lc使其仍然保持升序{ int i=0; //遍历La int j=0; //遍历Lb int k=0; //k指向Lc中最后一个位置 Init(Lc); //初始化Lc while(i<La.length&&j<Lb.length)//两张表都没有检查完 { if(La.elem[i]<=Lb原创 2021-08-10 13:52:50 · 114 阅读 · 0 评论 -
顺序表创建和基础操作
顺序表的创建及操作顺序表结构体定义typedef struct SqList{ int *elem;//元素 int length;//元素个数 int listsize;//表长}顺序表初始化:void InitSqList(SqList &L){ L.elem=(int*)malloc(sizeof(int));//申请地址空间 if(!L.elem)//申请失败 exit(-1); L.length=0;//线性表元素个数为0 L.listsize=InitS原创 2021-08-09 15:57:24 · 459 阅读 · 0 评论