数据结构算法题目合集
本专栏旨在记录自己在学习数据结构过程中所做过的一些算法题目。
Shen Qi Lang
NEFU CS本科在读,主要会在博客上面写写自己日常学习CS课程的笔记以及心得体会。
展开
-
2021-11-07二叉树的叶节点
#include <bits/stdc++.h>using namespace std;typedef struct btnode{ char data; struct btnode *lchild,*rchild;}btnode,*btree;void buildtree(btree &t){ char ch=getchar(); if(ch=='@') t=NULL; else { t=new b.原创 2021-11-07 10:14:39 · 70 阅读 · 0 评论 -
交换左右子数的函数
void exchange(TreeNode *p){ TreeNode *temp; if(!p)return; temp=p->leftChild; p->leftChild=p->rightChild; p->rightChild=temp; exchange(p->leftChild); exchange(p->rightChild);}原创 2021-10-31 16:46:10 · 99 阅读 · 0 评论 -
链队--的结构初始化,入队,出队,获取队头元素
typedef struct QNode{ QElemtype data; struct Queue *next;}QNode,*Queueptr;typedef struct{Queueptr front;Queueptr rear;}LinkQueue;//链队的结构Status initQueue(LinkQueue &Q){ Q.front=Q.rear=new QNode; Q.front->next=NULL; return ...原创 2021-10-17 01:52:19 · 311 阅读 · 0 评论 -
瑞格7040--在有向图的邻接表存储的基础上,试设计算法计算各顶点的度,并依次输出入度、出度、度。
#include <stdio.h>#include <malloc.h>#include <string.h>using namespace std;#define MAXVEX 20 //假设的最大顶点数int visited[100]={0};typedef char VertexType[3] ;/*数组类型*/typedef struct vertex /*顶点类型*/{ int adjvex; /*顶点编号*/ int data.原创 2021-11-19 17:20:34 · 803 阅读 · 0 评论 -
二叉树的层次遍历
#include <bits/stdc++.h>//不要忘了改用万能头文件using namespace std;typedef struct btnode{ char data; struct btnode *lchild,*rchild;}btnode,*btree;void buildtree(btree &t){ char ch=getchar(); if(ch=='@') t=NULL; else { .原创 2021-11-07 00:17:56 · 79 阅读 · 0 评论 -
队列的结构,初始化,入队,出队,求队列长度
队列typedef struct{QElemtype *base;int front;int rear;}SqQueue;//队列的顺序存储结构Status initStack(SqQueue &Q){ Q.base=new QElemtype[maxsize]; if(!Q.base)exit(overflow); Q.front=Q.rear=0; return OK;}//顺序队列的初始化Status push(SqQueue &Q,...原创 2021-10-17 01:17:05 · 456 阅读 · 0 评论 -
二叉树中,寻找离两个结点最近的公共祖先结点
#include<iostream>#include<stdlib.h>using namespace std;struct TreeNode { int data; TreeNode *leftChild,*rightChild; TreeNode() { leftChild = NULL; rightChild = NULL; }};class BinaryTree {protected: TreeNode *root; voi.原创 2021-11-12 21:21:07 · 632 阅读 · 0 评论 -
瑞格7042--采用邻接表存储实现无向图的深度优先非递归遍历。
#include <stdio.h>#include <malloc.h>#include <string.h>using namespace std;#define MAXVEX 20 //假设的最大顶点数int visited[100]={0};typedef char VertexType[3] ;/*数组类型*/typedef struct vertex /*顶点类型*/{ int adjvex; /*顶点编号*/ int data.原创 2021-11-19 17:23:16 · 536 阅读 · 0 评论 -
利用队列实现二叉树的层次遍历
#include<iostream>#include<stdlib.h>using namespace std;struct TreeNode { int data; TreeNode *leftChild,*rightChild; TreeNode() { leftChild = NULL; rightChild = NULL; }};struct QueueNode { TreeNode *t; QueueNode *next;.原创 2021-11-05 00:01:15 · 129 阅读 · 0 评论 -
与删除指定树结点配套的三个函数
void del(TreeNode *T){ if(T) { if(T->leftChild)del(T->leftChild); if(T->rightChild)del(T->rightChild); free(T); }}void delXsub(TreeNode *T,TreeNode *preT,int x,int f){ TreeNode *p=T; if(p-&g...原创 2021-10-31 16:25:42 · 85 阅读 · 0 评论 -
利用栈的运算,实现一个表达式计算:括号只含有{},(),[ ],+,-,*,/。
#include<stdio.h>#define maxsize 10000typedef struct{ char data[maxsize]; //存放栈中元素 int top; //栈顶指针}SqStack;typedef struct{ int data[maxsize]; int top=0;}sqmath;void initStack(SqStack &st){ st.top = -1.原创 2021-11-07 10:44:39 · 286 阅读 · 0 评论 -
综合训练:试编写算法,利用栈实现表达式求值算法。要求输入数字为个位数,表达式以#结束。
#include<stdio.h>#define maxsize 10000typedef struct{ char data[maxsize]; //存放栈中元素 int top; //栈顶指针}SqStack;//初始化栈void initStack(SqStack &st){ st.top = -1;}int isEmpty(SqStack st){ if(st.top==-1)return 1.原创 2021-11-06 14:18:33 · 485 阅读 · 0 评论 -
以字符点作为结束标志的字符串的逆转
#include<iostream>using namespace std;void InvertStore(char A[])//字符串逆序存储的递归算法。{ char ch; static int i = 0;//需要使用静态变量 cin>>ch; if (ch!= '.') //规定'.'是字符串输入结束标志 { InvertStore(A); A[i++] = ch;//字符串逆序存储...原创 2021-10-24 12:33:58 · 147 阅读 · 0 评论 -
瑞格7039--输出有向图的邻接表和深度优先遍历结果
#include <stdio.h>#include <malloc.h>#include <string.h>using namespace std;#define MAXVEX 20 //假设的最大顶点数int visited[100]={0};typedef char VertexType[3] ;/*数组类型*/typedef struct vertex /*顶点类型*/{ int adjvex; /*顶点编号*/ int data.原创 2021-11-19 17:19:08 · 306 阅读 · 0 评论 -
查找某结点的祖先结点
#include<bits/stdc++.h>using namespace std;typedef struct BiTNode{ char data; struct BiTNode *Lchild,*Rchild;}BiTNode,*BiTree;char a[100];int i=0;void CreateBiTree(BiTree &T){ char ch; cin>>ch; if(ch=='*')T=NULL;.原创 2021-11-12 19:16:29 · 645 阅读 · 0 评论 -
图的建立,输出,深度优先遍历,广度优先遍历,度的输出
#include <stdio.h>#include <malloc.h>#include <string.h>using namespace std;#define maxven 20bool visited[100]={0};int in[100]={0},out[100]={0},total[100];typedef struct ArcNode{ int adjvex; struct ArcNode *next;} ArcNode;type.原创 2021-11-21 12:40:39 · 532 阅读 · 0 评论 -
瑞格7043--利用邻接表实现无向图的广度优先遍历
#include <stdio.h>#include <malloc.h>#include <string.h>using namespace std;#define MAXVEX 20 //假设的最大顶点数int visited[100]={0};typedef char VertexType[3] ;/*数组类型*/typedef struct vertex /*顶点类型*/{ int adjvex; /*顶点编号*/ int data.原创 2021-11-19 17:24:32 · 271 阅读 · 0 评论 -
1.3求la,lb两个递增链表的交集链表,并存放在la链中
#include <stdio.h>#include <stdlib.h> typedef struct node{ int data; struct node *next;}LNode;void build(LNode *H,int n){ LNode *p,*r; int i; r=H; for(i=0;i<n;i++) { p=(LNode *)malloc(sizeof(LNode)); .原创 2021-09-21 20:23:43 · 659 阅读 · 0 评论 -
1.2.两个非递减链表合并为一个非递增链表(可以有重复)
#include <stdio.h>#include <stdlib.h> typedef struct node{ int data; struct node *next;}LNode;void build(LNode *H,int n){ LNode *p,*r; int i; r=H; for(i=0;i<n;i++) { p=(LNode *)malloc(sizeof(LNode)); .原创 2021-09-21 20:05:20 · 1467 阅读 · 2 评论 -
链栈的结构,初始化,入栈,出栈,得到栈顶元素
链栈typedef struct StackNode{SElemtype data;struct StackNode *next;}StackNode,*LinkStack;//链栈的结构Status initStackNode(LinkStack &S){ S=NULL; return OK;}//链栈的初始化Status push(LinkStack &S,SElemtype e){ p=new StackNode; p->da...原创 2021-10-17 00:40:42 · 300 阅读 · 0 评论 -
1.1两个递增链表合并为一个递增链表(不允许有重复)
#include <stdio.h>#include <stdlib.h> typedef struct node{ int data; struct node *next;}LNode;void build(LNode *H,int n){ LNode *p,*r; int i; r=H; for(i=0;i<n;i++) { p=(LNode *)malloc(sizeof(LNode)); .原创 2021-09-21 19:34:47 · 754 阅读 · 1 评论 -
顺序栈的定义,初始化,入栈,出栈,得到栈顶元素
顺序栈typedef struct{ SElemtype *top; SElemtype *base; int stacksize;}SqStack;//定义Status initstack(SqStack &S){ S.base=new SElemtype [maxsize]; if(!S.base)return exit(overflow); S.base=S.top; S.stacksize=maxsize; retu...原创 2021-10-17 00:22:07 · 393 阅读 · 0 评论 -
关于循环链表的查早最小元素然后输出删除--直至删完
#include <stdio.h>#include <malloc.h>typedef struct Node { int data; struct Node *next;}Node;Node *first;void List(){ first = (struct Node *)malloc(sizeof(struct Node)); first->next = first;}void Insert(int val){ No.原创 2021-09-24 22:01:41 · 123 阅读 · 0 评论 -
1.4求A-B(即在A中出现而在B中不出现)
#include <stdio.h>#include <stdlib.h> typedef struct node{ int data; struct node *next;}LNode;void build(LNode *H,int n){ LNode *p,*r; int i; r=H; for(i=0;i<n;i++) { p=(LNode *)malloc(sizeof(LNode)); .原创 2021-09-21 21:01:40 · 133 阅读 · 0 评论