国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【 第4關:入棧和出棧的基本操作】【編程題實訓-棧】【頭歌】【bjfu-243】

這篇具有很好參考價值的文章主要介紹了【 第4關:入棧和出棧的基本操作】【編程題實訓-?!俊绢^歌】【bjfu-243】。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

任務描述

本關任務:輸入一個整數(shù)序列a1,a2,a3…,an。當ai不等于-1時將ai進棧;當ai=-1時,輸出棧頂元素并將其出棧。

編程要求

輸入
多組數(shù)據(jù),每組數(shù)據(jù)有兩行,第一行為序列的長度n,第二行為n個整數(shù),整數(shù)之間用空格分隔。當n=0時輸入結(jié)束。

輸出
對于每一組數(shù)據(jù)輸出若干行。每行為相應的出棧元素。當出棧異常時,輸出“POP ERROR”并結(jié)束本組數(shù)據(jù)的輸出。

測試說明
平臺會對你編寫的代碼進行測試:

測試輸入:

5
1 2 -1 -1 1
5
1 -1 -1 2 2
0

預期輸出:

2
1
1
POP ERROR

來源
https://www.bjfuacm.com/

C++代碼

243 head.h
詳細見注釋

#include<iostream>
using namespace std;
#define  MAXSIZE  100
#define OK 1
#define ERROR 0
#define OVERFLOW -2
typedef struct
{
	int* base;
	int* top;
	int stacksize;
}SqStack;

int InitSqStack(SqStack& S)
{//棧的初始化
	S.base = new int[MAXSIZE];
	if (!S.base) return OVERFLOW;
	S.top = S.base;
	S.stacksize = MAXSIZE;
	return OK;
}


int Pop(SqStack& S)
{//出棧
	if (S.top == S.base){
        // cout << "POP ERROR" << endl;
		return ERROR;}
	S.top--;
	return OK;
}
int GetTop(SqStack S)
{//取棧頂元素
	if (S.top == S.base){
        // cout << "POP ERROR" << endl;
		return ERROR;}
	return *(S.top - 1);
}

int Push(SqStack& S, int e)
{//入棧

	if (e == -1)
	{
		if(S.top==S.base)
			cout << "POP ERROR" << endl;
		else
		{
			cout <<GetTop(S) << endl;
			Pop(S);
		}
	}
	else
	{
//        cout<<"push"<<e<<endl;
		*S.top = e;
		S.top++;
	}
	return OK;

}

void InOutS(SqStack& S, int a[], int n)
{//入棧和出棧的基本操作		按照要求輸出

	for(int i=0;i<=n;i++){
        if(n==2 and (a[0]==-1) and (a[1]==-1)){
        cout << "POP ERROR" << endl;
            break;
//            這里有個小bug
//            當輸入集為:
//            2
//            -1 -1
//            時
//            邏輯上應輸出兩次"POP ERROR",但測試答案只輸出一次"POP ERROR"
//            能力有限,歡迎斧正!
    }
        Push(S,a[i]);
    }
//    for(int i=0;i<=n;i++){
//        cout<<"a"<<i<<":"<<a[i]<<endl;
//    }
}

主函數(shù)文件不可編輯文章來源地址http://www.zghlxwxcb.cn/news/detail-734585.html

#include "head.h"
int main()
{
	int n;
	while(cin>>n)
	{
      	if(n==0) break;
      	SqStack S;
		InitSqStack(S);
		int a[n];
		for(int i=0;i<n;i++) cin>>a[i];  //整數(shù)序列
		InOutS(S,a,n);
	}
	return 0;
}

到了這里,關于【 第4關:入棧和出棧的基本操作】【編程題實訓-?!俊绢^歌】【bjfu-243】的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 【數(shù)據(jù)結(jié)構(gòu)】線性表(六)堆棧:順序棧及其基本操作(初始化、判空、判滿、入棧、出棧、存取棧頂元素、清空棧)

    【數(shù)據(jù)結(jié)構(gòu)】線性表(六)堆棧:順序棧及其基本操作(初始化、判空、判滿、入棧、出棧、存取棧頂元素、清空棧)

    ?? 堆棧Stack 和 隊列Queue 是兩種非常重要的數(shù)據(jù)結(jié)構(gòu),兩者都是特殊的線性表: 對于堆棧,所有的插入和刪除(以至幾乎所有的存?。┒际窃诒淼耐欢诉M行 對于隊列,所有的插入都是在表的一端進行,所有的刪除(以至幾乎所有的存?。┒际窃诒淼牧硪欢诉M行。 ?? 堆

    2024年02月07日
    瀏覽(24)
  • 【數(shù)據(jù)結(jié)構(gòu)】棧和隊列(棧的基本操作和基礎知識)

    【數(shù)據(jù)結(jié)構(gòu)】棧和隊列(棧的基本操作和基礎知識)

    ??個人主頁: 秦jh__ https://blog.csdn.net/qinjh_?spm=1010.2135.3001.5343 ???系列專欄: 《數(shù)據(jù)結(jié)構(gòu)》 https://blog.csdn.net/qinjh_/category_12536791.html?spm=1001.2014.3001.5482 目錄 ?前言 棧 棧的概念和結(jié)構(gòu) 棧的實現(xiàn) ?編輯 數(shù)組棧的實現(xiàn) 總的聲明 初始化 ?插入 刪除 取棧頂元素 銷毀 判斷是否為空

    2024年02月03日
    瀏覽(20)
  • 數(shù)據(jù)結(jié)構(gòu)-----棧(棧的初始化、建立、入棧、出棧、遍歷、清空等操作)

    數(shù)據(jù)結(jié)構(gòu)-----棧(棧的初始化、建立、入棧、出棧、遍歷、清空等操作)

    目錄 前言 棧 1.定義 2.棧的特點 3.棧的儲存方式 3.1數(shù)組棧 3.2鏈棧 ?4.棧的基本操作(C語言) 4.1初始化? ?4.2判斷是否滿棧 4.3判斷空棧 ?4.4 入棧 4.5 出棧 4.6獲取棧頂元素 ?4.7遍歷棧 ?4.8清空棧 ?完整代碼示例 ? ? ? ? 大家好呀!今天我們開始學習新的線性表結(jié)構(gòu)----棧,前面

    2024年02月06日
    瀏覽(26)
  • 順序棧的入棧與出棧-----(c語言)

    順序棧的入棧與出棧-----(c語言)

    棧:是限定僅在表尾進行插入和刪除操作的線性表(順序結(jié)構(gòu)) 棧頂:允許插入跟刪除的一端 棧底:固定的一端,不允許在棧底進行插入跟刪除 入棧:棧的插入操作 出棧:棧的刪除操作 目錄 定義棧 創(chuàng)建空棧 ?入棧 ?出棧 ?源代碼 此處定義棧的最大值為10,當然如果需要后

    2024年02月08日
    瀏覽(18)
  • Linux當中的壓棧和出棧指令以及跳轉(zhuǎn)指令詳細教程

    Linux當中的壓棧和出棧指令以及跳轉(zhuǎn)指令詳細教程

    我們通常會在 A 函數(shù)中調(diào)用 B 函數(shù),當 B 函數(shù)執(zhí)行完以后再回到 A 函數(shù)繼續(xù)執(zhí)行。要想 再跳回 A 函數(shù)以后代碼能夠接著正常運行,那就必須在跳到 B 函數(shù)之前將當前處理器狀態(tài)保存 起來(就是保存 R0~R15 這些寄存器值),當 B 函數(shù)執(zhí)行完成以后再用前面保存的寄存器值恢復 R0

    2023年04月10日
    瀏覽(14)
  • 鏈棧的基本操作(超詳細)

    鏈棧的基本操作(超詳細)

    目錄 前言 一.鏈棧的定義? 二、鏈棧的c++語言結(jié)構(gòu)描述表示 三、鏈棧中基本操作的實現(xiàn)? 3.1鏈棧的初始化 3.2判斷鏈棧是否為空? 3.3求鏈棧的長度? 3.4 鏈棧的入棧 3.4 鏈棧的出棧 3.5求棧頂元素? 3.6銷毀棧 四.鏈棧的具體實現(xiàn)? 五.測試結(jié)果 六、總結(jié)? 本文參考王卓老師的數(shù)據(jù)結(jié)

    2023年04月25日
    瀏覽(19)
  • 數(shù)據(jù)結(jié)構(gòu)之棧的基本操作

    數(shù)據(jù)結(jié)構(gòu)之棧的基本操作

    該順序棧涉及到了存儲整型數(shù)據(jù)的順序棧還有存儲字符型數(shù)據(jù)的順序棧 實現(xiàn)的功能有:入棧、出棧、判斷是否為空棧、求棧的長度、清空棧、銷毀棧、得到棧頂元素 此外根據(jù)上述功能,編寫了數(shù)值轉(zhuǎn)換(十進制轉(zhuǎn)化八進制)方法、括號匹配方法。 控制臺界面展示: 進棧展示

    2024年01月23日
    瀏覽(22)
  • 【頭歌】順序棧的基本操作及應用

    任務描述 本關任務是實現(xiàn)順序棧的基本操作函數(shù),以實現(xiàn)判斷棧是否為滿、是否為空、求棧元素個數(shù)、進棧和出棧等功能。 相關知識 棧的基本概念 棧 是一種特殊的線性表,其特殊性體現(xiàn)在元素插入和刪除運算上,它的插入和刪除運算僅限定在表的某一端進行,不能在表中

    2024年02月02日
    瀏覽(35)
  • 棧的概念及其基本操作--詳細(C++)

    棧的概念及其基本操作--詳細(C++)

    基本概念及相關術語: 棧是只允許 在一端 進行插入和刪除操作的 線性表 。 由此可見,棧也是線性表的一種,只是棧的操作受限制的線性表。 棧頂(top):線性表允許插入和刪除的那一段。 值得注意的是,棧頂指針top的指向是有些兩種方式的,一種是指向棧頂當前元素,

    2024年02月08日
    瀏覽(27)
  • 棧的定義及基本操作實現(xiàn)(順序棧)

    棧的定義及基本操作實現(xiàn)(順序棧)

    個人主頁:【??個人主頁】 系列專欄:【??數(shù)據(jù)結(jié)構(gòu)與算法】 學習名言:天子重英豪,文章教兒曹。萬般皆下品,惟有讀書高 第一章 ?? 學前知識 第二章 ?? 單向鏈表 第三章 ?? 遞歸 相信大家小時后一定玩過玩具槍吧,在我們裝子彈時玩具槍的子彈只能從彈夾的一

    2023年04月08日
    瀏覽(52)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包