1. 程式人生 > >採用順序儲存實現棧的初始化、入棧、出棧操作。/驗證實驗/

採用順序儲存實現棧的初始化、入棧、出棧操作。/驗證實驗/

#include<stdio.h>  
#include<stdlib.h>  
#define maxsize 100  
typedef struct SqStack
{  
    int data[maxsize];  
    int top;  
}SqStack;  
  


void SqStackEmpty(SqStack *st)//判斷棧是否為空
{  
st->top==-1?printf("棧仍為空,操作可能有風險建議重新除錯程式\n"): printf("棧不為空,操作可正常進行\n");
}  
 
void push(SqStack *st,int i)//進棧
{  
    if(st->top+i>=maxsize-1)
{   printf("overflow! 不能進棧!\n"); }  
    else
{   printf("請輸入你要進棧的%d個數據:\n",i);
for(int a=0;a<i;a++)
scanf("%d",&st->data[++st->top]); } 
}  
  
void pop(SqStack *st,int j)//出棧
{   
    if(st->top==-1)
{ printf("空棧怎能出棧!\n"); }  
    else if(st->top-j<-1)
{ printf("要求出棧的元素過多,已超出棧的儲存量");}
else
{   
printf("出棧的資料是:\n");
for(int a=0;a<j;a++)
printf("%d  ",st->data[st->top--]); 
}
printf("\n");
}  
  
void printStack(SqStack *st)//列印棧內當前所有的棧元素
{  
    while(st->top !=-1)
{  
        printf("棧元素:%d\n",st->data[st->top--]);  
    }  
}  


void main(){  
    int i,j,a;  
    SqStack st={{1,2,3,4},3};  //存入四個資料,以及top的位置即4-1=3,top來指示當前棧頂元素的位置
    SqStackEmpty(&st);
while(1)
{printf("輸入1進棧、2出棧、3列印棧\n");
scanf("%d",&a);
if(a==1)
{printf("輸入你要進棧資料的個數:\n");
    scanf("%d",&i);
push(&st,i);
continue;}
if(a==2)
{printf("輸入你要出棧資料的個數:\n");
scanf("%d",&j);
    pop(&st,j);
continue;}
    if(a==3)
    {printf("棧內資料:\n");
printStack(&st);
continue;}
else 
{printf("輸入有誤,請重新輸入!\n");
continue;}}
}  

相關推薦

採用順序儲存實現初始操作/驗證實驗/

#include<stdio.h>  #include<stdlib.h>  #define maxsize 100  typedef struct SqStack{      int data[maxsize];      int top;  }Sq

採用順序儲存實現迴圈佇列的初始入隊操作

//////////////////////下面為迴圈佇列 #include<stdio.h> #include<stdlib.h> #define OVERFLOW -2 #define MAXQSIZE 100  /*佇列的最大長度*/ ty

順序初始,判空,進,列印

#include<iostream> #define maxSize 100 //後面沒有分號 ; using namespace std; typedef stru

c++ 實現順序類(初始,退頂元素以及順序輸出頂指標與中的元素

/* 定義順序棧類(初始化,入棧,退棧。讀棧頂元素以及順序輸出棧頂指標與棧中的元素 */ #include<iostream> using namespace std; // template <class T> class sq_Stack {

已知長度為n的線性表A採用順序儲存結構,請寫一個時間複雜度為O(n)空間複雜度為O(1)的演算法,該演算法可刪除線性表中所有值為item的資料元素

語言:C++ #include <iostream> using namespace std; typedef int ElemType; //定義 #define MAXSIZE 100 typedef struct {ElemType *elem; int length;}Sq

Tensorflow實現Xaiver初始權重寫入L2正則新增LRN層

源自Tensorflow實戰的黃文堅、唐源書中的啟發: def xavier_init(fan_in, fan_out, constant = 1): low = -constant * np.sqrt(6.0 / (fan_in + fan_out))

每天一個數據結構-----順序儲存實現

#include <stdio.h> #define OK 1 #define ERROR 0 #define TRUE 1 #define FALSE 0 #define MAXSIZE 10 typedef int Status; typedef int S

(六)迴圈順序佇列的初始佇列佇列

初學資料結構最好的辦法可能是先讀程傑寫的《大話資料結構》,以下摘自豆瓣圖書簡介:《大話資料結構》以一個計算機教師教學為場景,講解資料結構和相關演算法的知識。通篇以一種趣味方式來敘述,大量引用了各種各樣的生活知識來類比,並充分運用圖形語言來體現抽象內容,對資料結構所涉及到的一

順序儲存實現-簡單的進

/************************************************************************ * * 檔名:2.2.1.cpp * * 檔案描述:棧的順序儲存實現 * * 建立人: fdk * 時 間: 2018-

實現中等難度通訊錄需求: 1定義聯絡人類AddressContact例項變數:姓名(拼音,首字母大寫)性別電話號碼住址分組名稱年齡方法:自定義初始化方法(姓名電話號碼)顯示聯絡人

<span style="font-size:24px;">// 1、定義聯絡人類AddressContact。例項變數:姓名(拼音,首字母大寫)、性別、電話號碼、住址、分組名稱、年齡。方法:自定義初始化方法(姓名、電話號碼)、顯示聯絡人資訊 { NS

Spring Boot實戰筆記(三)-- Spring常用配置(Bean的初始和銷毀Profile)

div nbsp troy string 實例化 public ive work 初始 一、Bean的初始化和銷毀   在我們的實際開發的時候,經常會遇到Bean在使用之前或之後做些必要的操作,Spring對Bean的生命周期操作提供了支持。在使用Java配置和註解配置下提

MOOC清華《面向對象程序設計》第8章:用代理模式實現延遲初始

blank ngx cin www. oci 初始化 lanp margin 程序 Z9閃5PFVL衣坑9http://shequ.docin.com/zdfi78227 哦3O8b4z宦塹7http://huiyi.docin.com/dvok6368 W34搜6csiy

初始

寄存器 x3400 sta 傳遞 取出 ack 壓入 pre back 棧:棧是一種具有後進先出性質的數據組織方式,也就是說後存放的先取出,先存放的後取出。棧低是第一個進棧的數據所處的位置,棧頂是最後一個進棧的數據所處的位置。 根據SP指針指向的位置,棧可以分為滿棧和空棧。

關於並發場景下,通過雙重檢查鎖實現延遲初始的優化問題隱患的記錄

ron href 修飾符 屬性 tin 記錄 targe turn 優化問題   首先,這個問題是從《阿裏巴巴Java開發手冊》的1.6.12(P31)上面看到的,裏面有這樣一句話,並列出一種反例代碼(以下為仿寫,並非與書上一致):   在並發場景下,通過雙重檢查鎖(do

pytorch系列 -- 9 pytorch nn.init 中實現初始函式 uniform, normal, const, Xavier, He initialization

本文內容: 1. Xavier 初始化 2. nn.init 中各種初始化函式 3. He 初始化 torch.init https://pytorch.org/docs/stable/nn.html#torch-nn-init 1. 均勻分佈 torch.nn.init.u

使用資料庫儲存過程建立初始資料記錄

目標需求:後臺管理系統的初始化管理員由於需繫結地區編碼,傳統手動建立使用者由於關聯表格較多,一次建立需花費較多時間,如若在後臺建立初始化服務存在一定的風險,擇優選擇資料庫指令碼自動生成 使用者表:t_admin_user CREATE TABLE `t_admin_user` (  

基於順序儲存實現的多叉樹(1):深度優先儲存

需求分析    在資料結構中,樹有兩種儲存方式,一種是鏈式儲存,另一種是順序儲存。前者就是使用指標來記錄樹結點間的關係,在新增結點或刪除結點時,只需改變與父結點或兄弟結點的指標值即可,實現較為簡單;後者就是使用陣列來儲存,可以用相對偏移量來記錄樹結點間的關係,在新增結點或刪除結點時,則不僅是改變

C語言實現迴圈佇列的初始&進隊&隊&讀取隊頭元素&判空-2

/*順序表實現佇列的一系列操作(設定flag標誌不損失陣列空間)*/ #include<stdio.h> #include<stdlib.h> #define Queue_Size 50 //佇列的最大長度 #define OK 1 #define ER

C語言實現鏈佇列的初始&進隊&

/*連結串列實現佇列的一系列操作*/ #include<stdio.h> #include<stdlib.h> #define OK 1 #define ERROR 0 typedef struct node { int data;

C語言實現迴圈佇列的初始&進隊&隊&讀取隊頭元素&判空-1

目前,處在學習資料結構+ing,由於之前學過了佇列,今天就把自己寫過的程式碼做了一些完善分享給大家,希望能夠幫助到有需要的朋友,有不足的地方歡迎大家交流    φ(゜▽゜*)♪ 佇列是另一種限定性的線性表,它只允許在表的一端插入元素,而在另一端刪除元素,所以佇列