![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
DataStructure
分享数据结构相关知识
平卉陌路
这个作者很懒,什么都没留下…
展开
-
用数组遍历二叉树
#include<bits/stdc++.h>using namespace std;void fun(char bt[],char c){ int i=0; while(bt[i]!='\n') { if(bt[i]!=c) i++; else break; } int n=strlen(bt); if(i==n) { cout<<"没有该结点"<<endl.原创 2020-12-08 21:41:01 · 137 阅读 · 0 评论 -
请设计一个栈,实现十进制数转任意进制数。
文章目录1.题目描述2.代码实现1.题目描述请设计一个栈,实现十进制数转任意进制数2.代码实现#include <iostream>using namespace std;#define MAXSIZE 100typedef struct{ int *base;//栈底指针 int *top;//栈顶指针 int stacksize;//栈最大容量} SqStack;//初始化栈void InitStack(SqS..原创 2020-12-04 19:35:10 · 452 阅读 · 0 评论 -
回文是指正读反读均相同的字符序列;如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半字符入栈)
1.题目描述回文是指正读反读均相同的字符序列;如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半字符入栈)2.算法实现#include<bits/stdc++.h>using namespace std;#define MAXSIZE 100typedef struct{ int *base; int *top; int stacksize;}SqStack;...原创 2020-12-03 22:07:20 · 7443 阅读 · 3 评论 -
将编号为0和1的两个栈存放于一个数组空间V[m]中。
目录1.题目描述2.算法实现1.题目描述将编号为0和1的两个栈存放于一个数组空间V[m]中,栈底分别处于数组的两端。当第0号栈的栈顶指针top[0]等于-1时该栈为空;当第1号栈的栈顶指针top[1]等于m时该栈为空。两个栈均从两端向中间增长(见图)。试编写双栈初始化,判断栈空、栈满、进栈和出栈等算法的函数。2.算法实现#include<bits/stdc++.h>#define MAXSIZE 100using namespace std;ty..原创 2020-12-03 13:55:23 · 8205 阅读 · 5 评论 -
用for循环打印一个特殊图形
#include<iostream>using namespace std;int main(int argc, char const *argv[]){ int i,j,k,f; for (i=1;i<=4;i++){ for (j=1;j<=30;j++) cout<<" "; for (k=1;k<=8-2*i;k++) cout<<" ";原创 2020-11-21 21:49:46 · 171 阅读 · 0 评论 -
C++描述洛谷.顺序栈实现数制的转换 ||
C++描述洛谷.顺序栈实现数制的转换 ||原创 2020-11-17 12:35:29 · 207 阅读 · 0 评论 -
洛谷 P3156 【深基15.例1】询问学号 线性表实现
#include<iostream>using namespace std;typedef struct{ int *Elem; int length;}SqList;void CreateList(SqList &L,int &n){ L.Elem=new int[n]; for(int i=0;i<n;i++){ cin>>L.Elem[i]; } L.length=n;}原创 2020-11-16 18:55:38 · 323 阅读 · 0 评论 -
请你设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同或不同)。
#include <iostream>using namespace std;typedef struct lnode{ int data; struct lnode *next;} lnode,*LinkList;int CreateList(LinkList &L,int n){ lnode *p,*r; L=new lnode; L->next=NULL; r=L; for(int i=0; i<n原创 2020-11-16 15:58:13 · 2811 阅读 · 0 评论 -
设计一个算法,将有序链表中所有结点的链接方向“原地”逆转,即要求仅利用原表的存储空间,换句话说,要求算法空间复杂度为O(1)。
#include<iostream>using namespace std;typedef struct lnode{ int data; struct lnode *next;} lnode,*LinkList;void CreateList(LinkList &L,int m){ lnode *p,*r; L=new lnode; L->next=NULL; r=L; for(int i=0; i<m原创 2020-11-15 23:01:58 · 2852 阅读 · 0 评论 -
已知长度为n的线性表A采用书顺序存储结构,请写一个时间复杂度为O(n),空间复杂度为O(1)的算法,该算法可删除线性表中所有值为item的数据元素。
#include<iostream>using namespace std;typedef struct{ int *elem; int length;}SqList;void CreateList(SqList &L,int n){ for(int i=0;i<n;i++) { cin>>L.elem[i]; } L.length=n;}void Delete_e(SqList &a原创 2020-11-15 22:37:33 · 5672 阅读 · 2 评论 -
请设计一个算法,通过一趟遍历来确定长度为n的单链表中值最大的结点。
#include<iostream>using namespace std;typedef struct lnode{ int data; struct lnode *next;}lnode,*LinkList;void CreateList(LinkList &L,int n){ lnode *r; L=new lnode; L->next=NULL; r=L; for(int i=0;i<n;i++)原创 2020-11-15 19:16:23 · 4997 阅读 · 0 评论 -
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和集合B的差集(近由在A中出现而不再B中出现的元素所构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
#include <iostream>using namespace std;//第四题typedef struct Lnode{ int data; struct Lnode *next;} lnode, *linklist;void creatlist_h(linklist &L, int n){ lnode *p; L=new lnode; L->next=NULL; for(int i=0; i<n; i原创 2020-11-13 12:45:59 · 3631 阅读 · 0 评论 -
已知链表A和B分别表示两个集合,其元素递增排列。请设计一个算法,用于求出A与B的交集,并存放于A链表中。
#include<iostream>using namespace std;//第三题typedef struct lnode{ int data; struct lnode *next;} lnode,*LinkList;void CreateList(LinkList &L,int n){ lnode *p; L=new lnode; L->next=NULL; for(int i=0; i<n; i++)原创 2020-11-12 22:08:52 · 1883 阅读 · 2 评论 -
将两个非递减的有序链表合并为一个非递增的有序链表。要求是结果仍使用原来两个链表的空间,不另外占用其他的存储空间。表中允许有重复的数据。
#include<iostream>using namespace std;//第二题typedef struct lnode{ int data; struct lnode *next;} lnode,*LinkList;void CreateList(LinkList &L,int n){ lnode *p; L=new lnode; L->next=NULL; for(int i=0; i<n; i++)原创 2020-11-12 12:30:15 · 901 阅读 · 0 评论 -
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的空间。表中不允许又重复的数据
#include<iostream>using namespace std;typedef struct lnode{//定义结点类型 int data; struct lnode *next;//递归定义} lnode,*LinkList;void CreateList(LinkList &L,int n){//创建新链表 L=new lnode;//生成一个头结点 L->next=NULL;//结点L的next置空 for原创 2020-11-12 09:37:36 · 5113 阅读 · 2 评论 -
在主函数中调用函数比较三个数的大小
#include <iostream>using namespace std;int main(){ void swap(int *p1,int *p2); int *pointer_1,*pointer_2,a,b; cin>>a>>b; pointer_1=&a; pointer_2=&b; if(a<b) { swap(pointer_1,pointer_2);原创 2020-11-05 21:18:18 · 1081 阅读 · 1 评论 -
用指针实现比较两个数的大小
#include <iostream>using namespace std;int main(){ /* int a,b; int *pointer_1,*pointer_2; a=100;b=10; pointer_1=&a; pointer_2=&b; cout<<a<<" "<<b<<endl; cout<<*pointer_1<<" "原创 2020-11-05 21:15:12 · 2150 阅读 · 0 评论 -
将数组前n个和后m-n个整体逆置的实现
#include <iostream>using namespace std;/*void inverst(int *R,int s,int t){ int k,w; for(k=s;k<=(s+t)/2;k++){ w=R[k]; R[k]=R[t-k+s]; R[t-k+s]=w; }}int main(){ int A[10],i,m; cout<<"请输入10个数:";原创 2020-11-05 21:07:33 · 487 阅读 · 0 评论 -
单链表基本操作在主函数中的实现
#include <iostream>#define OK 1#define ERROR 0#define VOERFLOE -2using namespace std;typedef int Status;typedef struct LNode{ int date; struct LNode *next;} LNode,*LinkList;//构造一个空的顺序表LStatus InitList(LinkList &L){ L=new原创 2020-11-05 21:02:28 · 5757 阅读 · 1 评论 -
顺序表基本操作在主函数中的实现
#include<iostream>#define OK 1#define ERROR 0#define OVERFLOW -2#define MAXSIZE 100using namespace std;typedef int Status;typedef struct{ int *elem; int length;} SqList;//构建空线性表Status InistList(SqList &L){ L.elem=new int原创 2020-11-05 20:58:33 · 4487 阅读 · 0 评论 -
如何求解两个数的最大公约数
#include using namespace std;//暴力法求解最大公约数/*int main(){int m,n,t;cout<<“请输入两个整数:”;cin>>m>>n;if(m<n){int temp=m;m=n;n=temp;}for(int i=n;i>1;i–){if(m%i0&&n%i0){t=i;break;}}cout<<“最大公约数是:”<<t<<原创 2020-11-01 16:41:51 · 218 阅读 · 0 评论