• 2024-07-127-循环队列的基本操作
    顺序队列的操作#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefintElemType;#defineMaxSize50/*顺序队列的类型定义*/typedefstruct{/*用一维数组存放队列元素*/ElemTypedata[MaxSize];/*队头指针*/intfront;/*
  • 2024-07-11线性表——顺序栈
    #include<bits/stdc++.h>usingnamespacestd;#defineMaxSize2typedefstruct{ intdata[MaxSize]; inttop;}SqStack;//初始化voidInitStack(SqStack&S){ S.top=-1;}//判断栈空和已入栈元素个数voidStackEmpty(SqStackS){ if(S.top==-1) cout<<&
  • 2024-07-105-顺序栈的操作
    #include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefintElemType;/**/#defineMaxSize50/**/typedefstruct{ElemTypedata[MaxSize];/*top:数组索引从0开始=MaxSize-1*/inttop;}SqStack;/*初始化栈*/voidInit
  • 2024-07-09线性表——静态链表(插入阉割版)
    #include<bits/stdc++.h>usingnamespacestd;#defineMaxSize3typedefstructSNode{ intdata; intnext;}SLinkList[MaxSize];//初始化voidInitList(SLinkListL){ L[0].data=0; //我这里放的是链表长度 for(inti=0;i<MaxSize;i++){ L[i].next=-1; }}//
  • 2024-06-0603-3.2.2 队列的顺序存储实现
  • 2024-06-04数据结构·栈和队列
    栈栈(Stack):只允许在一端插入或删除的线性表栈顶:线性表允许进行插入或删除的那一端栈底:固定的,不允许进行插入和删除的另一端特点:是受限的线性表,拥有线性关系;后进先出LIFO顺序栈使用顺序存储,自底向上存储数据元素,指针指向栈顶元素的位置操作s.top=-1;
  • 2024-05-26队列——顺序存储
    核心思路:1、使用顺序存储的方式定义队列时,使用数组存储队列元素,然后声明两个int类型的指针——rear和front,分别指向队尾元素的下一个位置和队头元素的位置。2、初始化队列时,队列的首尾指针都指向0。3、当队列为空时,队尾和队头指针指向同一个位置(不一定等于0)。4、队满条
  • 2024-05-1055. 跳跃游戏
    给你一个非负整数数组nums,你最初位于数组的第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。判断你是否能够到达最后一个下标,如果可以,返回true;否则,返回false。示例1:输入:nums=[2,3,1,1,4]输出:true解释:可以先跳1步,从下标0到达下标1,然后再从
  • 2024-04-11队列的基本操作
    (一)结构体定义一个顺序队列typedefstruct{chardata[maxsize];intrear,front; }sqQueue;(二)队列的初始化头尾两个指针指向0voidInitQueue(sqQueue*s){ (*s).rear=(*s).front=0;}(三)进队操作 注意循环队列的使用intEnQueue(sqQueue*Q,charx)//入队{
  • 2024-04-06两个顺序表的合并问题
    两个顺序表的合并问题#include<stdio.h>#defineMAXSIZE300typedefstruct{ intlength; int*p;}Sqlist;voidSXB(Sqlist&L){ L.length=0; L.p=newint[MAXSIZE];}voidinsert(Sqlist&L,intn){ if(n>MAXSIZE)printf("inputerror!"); in
  • 2024-03-25北林oj数据结构259
    字符串的插入描述编写算法,实现下面函数的功能。函数voidinsert(char*s,char*t,intpos)将字符串t插入到字符串s中,插入位置为pos(插在第pos个字符前)。假设分配给字符串s的空间足够让字符串t插入。(说明:不得使用任何库函数)输入多组数据,每组数据有三行,第一行为插入的位置pos
  • 2024-03-10算法题 - Shuffling Machine
    Introduction:Shufflingisaprocedureusedtorandomizeadeckofplayingcards.Becausestandardshufflingtechniquesareseenasweak,andinordertoavoid"insidejobs"whereemployeescollaboratewithgamblersbyperforminginadequatesh
  • 2024-02-20C语言循环队列详解
    前言相比于链队列,循环队列有着内存固定,效率高等特点,因而广泛应用于计算机的各个层面。本文主要介绍循环队列的概念和特点,列举一些循环队列的应用场景,以及给出用数组用C语言实现循环队列的代码。一、什么是循环队列?循环队列是一种特殊的线性表,特殊之处在于它只允许在表
  • 2024-02-07[数据结构] 队列
    队列的基本概念队列(Queue),是一种操作受限的线性表,只允许在表的一端进行插入,而在表的另一端进行删除。向队列中插入元素称为入队,删除元素称为出队。其操作特性是先进先出队列的常见操作:函数名功能InitQueue(*Q)初始化队列,构造一个空队列QQueueEmpty(Q)判断队列空
  • 2024-01-30牛客周赛 Round 29
    C题:用桶处理字符串重排小红拿到了一个字符串,其中一定包含连续子串"xiao",和连续子串"hong"。请你将字符串重排,使得该字符串包含"xiaohong"的连续子串。较简单的做法:遍历字符串,给每个字符放到相应的桶中,然后先先输出目标字符串xiaohong,同时对桶进行相对应的调整。最后再按任意顺
  • 2024-01-15【数据结构】C语言实现共享栈
    共享栈通过C语言实现导言大家好,很高兴又和大家见面啦!!!在上一篇内容中,我们介绍了如何通过C语言实现顺序栈,并且在介绍顺序栈的进栈操作时有提到过我们可以通过选择数组的首元素或者尾元素作为栈底,来进行栈的创建,以及栈的另一种形式——链栈。根据前面的介绍,我们知道了顺序栈是通过静
  • 2023-11-26邻接矩阵
     #include<stdio.h>#include<stdlib.h>#defineMaxSize20typedefintVertexType;typedefintEdgeType;typedefintElem;typedefstruct{//邻接矩阵VertexTypeVex[MaxSize];EdgeTypeEdge[MaxSize][MaxSize];
  • 2023-11-24最后的图
    #include<stdio.h>#include<stdlib.h>#defineMaxSize20typedefintVertexType;typedefintEdgeType;typedefintElem;typedefstruct{//邻接矩阵VertexTypeVex[MaxSize];EdgeTypeEdge[MaxSize][MaxSize];
  • 2023-11-18创建顺序表(动态分配)
    #include<stdio.h>#include<stdlib.h>#defineInitSize10//默认的最大长度//定义结构体typedefstruct{ int*data; //指示动态分配的指针 intMaxSize; //顺序表的最大容量 intlength; //顺序表的当前长度}SqList;//初始化顺序表voidInitList(SqList&L){ L.d
  • 2023-11-18创建顺序表(C++)
    include<stdio.h>defineMaxSize10 //定义最大长度//创建顺序表typedefstruct{intdata[MaxSize]; //创建数组data用来储存数据元素,并将data的长度设置为MaxSizeintlength; //顺序表的当前长度}SqList;//初始化顺序表voidInitList(SqList&L){for(inti=0;i<
  • 2023-11-13C实现顺序栈
    顺序栈的基本模型完整的C代码点击查看代码#include<stdio.h>#include<stdlib.h>#include<stdbool.h>typedefstructStackNode{ /*metadatanodeofstack*/ int*data;//pointtoanarray inttop; intmaxsize;}StackNode,*Stack;StackcreateStack
  • 2023-11-13C实现循环队列
    1.循环队列的基本模型1.1此模型采用的队列判空条件是rear==front为真1.2此模型采用的队列已满条件是(rear+1)%maxsize==front为真,因此有一个数组单元(也就是front指向的数组单元)不可使用1.3可以在队列结点加一个成员表示最近一次对队列的操作为入队操作或者出队操作,这样
  • 2023-11-11高效利用队列的空间
      大家都知道队列是可以用数组来模拟的,可以先开辟一段定长的数组空间,然后分别使用两个变量head和tail来代指队列的头和尾,从而维护整个队列,相信到这里大家都比较熟悉。不过这种做法是有弊端的,比如说下图这种情况  假设经过不断地增删元素,Head和Tail已经来到了数组最后两个位
  • 2023-11-03C语言 循环队列
    什么是队列队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。什么是循环队列在实际使用队列时,为了使队列空间能重复使用,往往对
  • 2023-10-23顺序表——动态分配和静态分配
    静态分配数组采用静态分配时,数组的大小和空间事先已经固定,一旦空间占满,再新加入数据就会溢出,导致程序崩溃。1//顺序表——静态分配2#include<stdio.h>3#defineMaxSize10//定义顺序表的最大长度45//定义6typedefstruct{7intdata[MaxSize];