【考研复习】24王道数据结构课后习题代码|第3章栈与队列

这篇具有很好参考价值的文章主要介绍了【考研复习】24王道数据结构课后习题代码|第3章栈与队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

3.1 栈

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

int symmetry(linklist L,int n){
    char s[n/2];
    lnode *p=L->next;
    int i;
    for(i=0;i<n/2;i++){
        s[i]=p->data;
        p=p->next;
    }
    i--;
    if(n%2==1) p=p->next;
    while(p&&s[i]==p->data){
        i--;
        p=p->next;
    }
    if(i==-1) return 1;
    else return 0;
}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

typedef struct {
    int stack[Max];
    int top[2];
}stk;
stk s;
int push(int i, int x){
    if(i<0||i>1){
        cout<<"no stack"<<endl;
        return -1;}
    if(s.top[1]-s.top[0]==1){
        cout<<"full stack"<<endl;
        return -1;
    }
    switch (i)
    {
    case 0:
        s.stack[++s.top[0]]=x; 
        return 1;
        break;
    case 1:
        s.stack[++s.top[1]]=x; 
        return 1;
        break;
    }
}
int pop(int i){
    if(i<0||i>1){
        cout<<"no stack"<<endl;
        return -1;}
    switch (i)
    {
    case 0:
        if(s.top[0]==-1){
            cout<<"empty stack"<<endl;
            return -1;
        }else{
            return s.stack[s.top[0]--];
        }
        break;
    case 1:
        if(s.top[0]==Max){
            cout<<"empty stack"<<endl;
            return -1;
        }else{
            return s.stack[s.top[1]--];
        }
        break;
    }
}

3.2 队列

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

#define Maxsize 10
typedef struct{
    int data[Maxsize];
    int rear,front,tag;
}SqQueue;
int EnQueue(SqQueue &Q, int x){
    if(Q.front==Q.rear&&Q.tag==1) return 0; //队列满了
    Q.data[Q.rear]=x;
    Q.rear=(Q.rear+1)%Maxsize;
    Q.tag=1;
    return 1;
}
int DeQueue(SqQueue &Q, int x){
    if(Q.front==Q.rear&&Q.tag==0) return 0; //队空
    x=Q.data[Q.front];
    Q.front=(Q.front+1)%Maxsize;
    Q.tag=0;
    return 1;
}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构
伪代码

void inverse(stack &s, queue &q){
    while(!queueempty(q)){
        x=dequeue(q);
        push(s,x);
    }
    while(!stackempty(s)){
        pop(s,x);
        enqueue(q,x);
    }
}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

int enqueue(stack &s1, stack &s2, int e){
    if(!(stackoverflow(s1))){
        push(s1,e);
        return 1;
    }
    if(stackoverflow(s1)&&!(stackempty(s2))){
        cout<<" stack is overflow. "<<endl;
        return 0;
    }
    if(stackoverflow(s1)&&stackempty(s2)){
        while(!(stackempty(s1))){
            pop(s1,x);
            push(s2,x);
        }
    }
    push(s1,e);
    return 1;
}
void dequeue(stack &s1,stack &s2, int &x){
    if(!stackempty(s2)){
        pop(s2,x);
    }
    else if(stackempty(s1)){
        cout<<" stack is empty"<<endl;
    }
    else{
        while(!stackempty(s1)){
            pop(s1,x);
            push(s2,x);
        }
        pop(s2,x);
    }
}
int queueempty(stack s1,stack s2){
    if(stackempty(s1)&&stackempty(s2)){
        return 1;
    }else return 0;
}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

3.3 栈和队列的应用

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

#include <iostream>
#include <stack>
using namespace std;
bool check(char str[]){
    stack <char> sck; 
    int i=0;
    char temp;
    while(str[i]!='\0'){
        if(str[i]=='('||str[i]=='{'||str[i]=='[') {
            sck.push(str[i]);
            break;
        }
        else if(str[i]==']'){
            temp = sck.top();
            sck.pop();
            if(temp!='[') return false;
        }
        else if(str[i]==')'){
            temp = sck.top();
            sck.pop();
            if(temp!='(') return false;
        }
        else if(str[i]=='}'){
            temp = sck.top();
            sck.pop();
            if(temp!='{') return false;
        }
    }
    if(sck.empty()) return true;
    return false;
}
int main(){
    char *str=(char*)"()[](}{}()";
    cout<<str<<endl;
    if(!check(str)) cout<<"no !!"<<endl;
    else cout<<"yes!!1"<<endl;
    return 0;

}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

#include <iostream>
#include <stack>
using namespace std;
void train_arrange(char *train){
    stack <char> sck;
    char *p=train,*q=train,t;
    while(*p){
        if(*p=='H') {
            sck.push(*p);
        }else{
            *(q++)=*p;
        }
        p++;
    }
    while (!sck.empty())
    {
        t = sck.top();
        sck.pop();
        *(q++)=t;
    }
    
}
int main()
{
    char str[11]="HSHSHHHSHS";
    train_arrange(str);
    cout<<str<<endl;
    return 0;
} // namespace std;

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构
【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构

#include <iostream>
#define maxsize 100
using namespace std;
double p(int n, double x){
    struct stack{
        int no;
        double val;
    }st[maxsize];
    int top=-1,i;
    double fv1=1,fv2=2*x;
    for(i=n;i>=2;i--){
        top++;
        st[top].no=i;
    }
    while(top>0){
        st[top].val=2*x*fv2-2*(st[top].no-1)*fv1;
        fv1=fv2;
        fv2=st[top].val;
        top--;
    }
    if(n==0){
        return fv1;
    }
    return fv2;
}
int main(){
double ans1=p(1,1.9);
    cout<<ans1<<endl;
}

【考研复习】24王道数据结构课后习题代码|第3章栈与队列,考研复习,考研,数据结构文章来源地址https://www.toymoban.com/news/detail-644413.html

到了这里,关于【考研复习】24王道数据结构课后习题代码|第3章栈与队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【数据结构】24王道考研笔记——树与二叉树

    树是n个结点的有限集合,n=0时,称为空树。非空树满足: 除了根节点外,任何一个结点都有且仅有一个前驱 结点的层次(深度):从上往下数 结点的高度:从下往上数 树的高度(深度):总共有多少层 结点的度:有几个孩子(分支) 树的度:各节点的度的最大值 森林:

    2024年02月13日
    浏览(49)
  • 王道考研数据结构——链表

    找到头节点就相当于找到了整个链表 Linklist Lnode*是一个东西 大部分使用的带头结点,比较方便!带头结点只维护指针域,不维护数据域 找前驱节点+插入节点(可以单独封装成一个函数)  如果不带头节点的话,那么插入和删除头节点的话都需要特殊处理,即重新修改头指针的

    2024年02月16日
    浏览(59)
  • 【王道考研】王道数据结构与算法详细笔记(全)

    目录 第一章 数据结构绪论  1.1 数据结构的基本概念 1.2 数据结构的三要素 1.2.1. 数据的逻辑结构 1.2.2. 数据的存储结构(物理结构) 1.2.3. 数据的运算 1.2.4. 数据类型和抽线数据类型 1.3 算法的基本概念 1.4 算法的时间复杂度 1.5 算法的空间复杂度 第二章 线性表 2.1 线性表的定

    2024年02月08日
    浏览(52)
  • 王道考研数据结构--2.单链表

    1.前言 2.难点 2.1c和c++的引用转换 2.2引入头结点的好处 2.3头插法和尾插法 3.代码段 3.1C语言自定义bool操作 3.2单链表结构体定义 3.3创建新节点 3.4头插法和尾插法 3.5查找 3.6按位序插入 3.7后插和前插 3.8删除 3.9求表长 3.10遍历输出单链表 4.完整代码 日期:2023.6.21 书籍:2024年数据

    2024年02月09日
    浏览(115)
  • 数据结构笔记(王道考研) 第一章:绪论

    大部分内容基于中国大学MOOC的2021考研数据结构课程所做的笔记,该课属于付费课程(不过盗版网盘资源也不难找。。。)。后续又根据23年考研的大纲对内容做了一些调整,将二叉排序树和平衡二叉树的内容挪到了查找一章,并增加了并查集、平衡二叉树的删除、红黑树的内

    2024年02月14日
    浏览(49)
  • 王道考研数据结构--4.2循环队列

    目录 前言  1.循环队列的定义 2.循环队列的结构 3.循环队列的操作 3.1定义循环队列 3.2初始化 3.3入队 3.4出队 3.5遍历,求表长 3.6清空销毁 4.完整代码 日期:2023.7.25 书籍:2024年数据结构考研复习指导(王道考研系列) 内容:实现顺序队列的基本实现,主要功能如下: 1.循环队

    2024年02月15日
    浏览(47)
  • 【数据结构】| 王道考研——树的前世今生

    根据王道考研数据结构总结出的知识点,以下是文章整体大纲: 1.1 概念 树是n个结点的有限集合,n = 0时称为空树,这是一种特殊情况。任意一棵非空树中应满足: 有且仅有一个特定的称为根的节点 当n1时,其余结点可分为m个互不相交的有限集合T1、T2、T3……Tm;每个集合又

    2024年02月15日
    浏览(49)
  • 【2023王道数据结构】王道数据结构课后代码题汇总答案C、C++代码实现完整版大全(可直接运行)

    本文章为 2023王道数据结构专栏 导航贴,正在积极更新中! 本专栏文章将王道一些 课后算法设计题目 的全部实现(答案解析全部都是伪码或者函数的部分实现,不可调试运行), 同时包含各个章节的经典算法数据结构的实现以及一些经典的算法 本专栏使用人群:复习数据

    2024年02月16日
    浏览(41)
  • 一篇学完:王道考研408数据结构(全)

    PDF版本附在  lengyueling.cn 对应 文章结尾,欢迎下载访问交流 数据结构在学什么 如何用程序代码把现实世界的问题信息化 如何用计算机高效地处理这些信息从而创造价值 数据结构的基本概念 什么是数据: 数据是信息的载体,是描述客观事物属性的数、字符及所有能输入到

    2023年04月08日
    浏览(45)
  • 王道考研数据结构第五章知识点

    5.1.1 树的定义和基本术语   祖先节点:(对于你来说),父亲和爷爷都是祖先节点 子孙节点:对于父亲来说,父亲下面所有的节点都叫子孙节点 双亲节点(父节点):一个节点的直接前驱就是它的父节点  兄弟节点:例如二叔,三叔都是父亲的兄弟节点 堂兄弟节点:对于你来说,

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包