棧的建立、返回棧頂元素、刪除棧頂元素、插入棧頂元素
#include <stdio.h>
#include <stdlib.h>
#define STACK_INIT_SIZE 100//初始容量
#define STACKINCREMENT 10//每次增加的容量
typedef struct
{
int *base;//棧底指標
int *top;//棧頂指標
int stacksize;//棧容量
}Sqstack;
int InitStack(Sqstack *L)//建立空棧
{
L->base=(int *)malloc(STACK_INIT_SIZE * sizeof(int));//分配基址
if(!L->base)
exit(0);//儲存分配失敗
L->top=L->base;//空棧
L->stacksize=STACK_INIT_SIZE;//初始容量
return 1;
}
void GetStack(Sqstack *L)//返回棧頂元素
{
int e;
if(L->top==L->base)//棧空
{
printf("棧空,無法返回.\n");
exit(0);
}
else
{
e=*(L->top-1);//棧頂指標的前一個位置即為棧頂元素
printf("棧頂資料為:
}
}
void Push(Sqstack *L)//插入棧頂元素
{
printf("請輸入插入的資料shu:");
int e;
scanf("%d",&e);
if(L->top - L->base>=L->stacksize)//棧滿
{
L->base=(int *)realloc(L->base,(L->stacksize+STACKINCREMENT)*sizeof(int));//增加容量
if(!L->base)
exit(0);//儲存分配失敗
L->top=L->base+L->stacksize;//更新棧頂指標
L->stacksize+=STACKINCREMENT;//更新棧容量
}
*L->top++=e;//棧頂資料變為e
}
void Pop(Sqstack *L)//刪除棧頂元素
{
int e;
if(L->top==L->base)//棧空
{
printf("刪除有誤.\n");
exit(0);
}
else
{
e=*--L->top;
printf("刪除資料為:%d\n",e);
}
}
void ShowStack(Sqstack *L)//顯示棧
{
printf("棧:");
int *p;
p=L->base;
while(p!=L->top)
{
printf("%d ",*p++);
}
printf("\n");
}
int main()
{
printf("先構造一個空棧.\n");
Sqstack L;
InitStack(&L);
printf("%s",InitStack(&L)?"建立成功.\n":"建立失敗.\n");
while(1)
{
printf("你可以進行的操作:\n");
printf("1:返回棧頂元素 2:插入棧頂元素 3:刪除棧頂元素 0:退出\n");
printf("請輸入你的選擇:");
int xuan;
scanf("%d",&xuan);
if(xuan==0)
break;
if(xuan==1)
{
GetStack(&L);
ShowStack(&L);
}
if(xuan==2)
{
Push(&L);
ShowStack(&L);
}
if(xuan==3)
{
Pop(&L);
ShowStack(&L);
}
}
return 0;
}
相關推薦
棧的建立、返回棧頂元素、刪除棧頂元素、插入棧頂元素
#include <stdio.h> #include <stdlib.h> #define STACK_INIT_SIZE 100//初始容量 #define STACKINCREMENT 10//每次增加的容量 typedef struct {
實現一個棧,要求實現出棧、入棧、返回最小值的時間複雜度為O(1)
由棧的一些基本操作,很容易使出棧和入棧的時間複雜度為O(1),但是由於入棧資料元素順序不一定是有序的,故不能直接實現返回最小值的時間複雜度為O(1)。下面提供兩種方法: (一)設定一個特殊的資料結構型別,包括兩個棧_data棧和_mindata棧,_data棧和原來的棧
鏈棧的置空入棧,出棧,和返回棧頂元素操作
#include "stdio.h" #include "stdlib.h" #define N sizeof(struct stack) typedef struct stack{int data;struct stack *next; }*pstack; //置空鏈棧
python全棧脫產第34天------開啟進程的兩種方式、join方法、進程對象其他相關的屬性和方法、僵屍進程、孤兒進程、守護進程、互斥鎖
for roc -- don 操作 windows main 周期 僵屍 一、開啟進程的兩種方式 方式一: from multiprocessing import Processimport timedef task(name): print(‘%s is run
python全棧脫產第37天------進程池與線程池、協程、gevent模塊、單線程下實現並發的套接字通信
rt thread adp targe rec 並發 urn pat return nco 一、進程池與線程池 調用concurrent.futures下的ThreadPoolExecutor,ProcessPoolExecutor來實現 提交任務有兩種方式:同步調
“全棧2019”Java第三十九章:構造函數、構造方法、構造器
語言 tel https 全棧 工程師 alt 頭條 時間 公眾 難度 初級 學習時間 10分鐘 適合人群 零基礎 開發語言 Java 開發環境 JDK v11 IntelliJ IDEA v2018.3 文章原文鏈接 “全棧2019”Java第三十九章:構造函數、構造
【劍指offer】包含min函式的棧,可以返回棧中的最小元素
題目要求 包含min函式的棧 定義棧的資料結構,請在該型別中實現一個能夠得到棧中所含最小元素的min函式 (時間複雜度應為O(1))。 核心思想 棧的特性是先進後出,而不能從任意位置出棧,因此一個棧無法實現。只能通過建立輔助棧來實現。用輔助棧來儲存棧的最小
Python全棧學習筆記day 27: isinstance和issubclass、反射、類的內建方法(__str__和__repr__、__del__、__call__)
一、isinstance和issubclass isinstance(obj,cls)檢查是否obj是否是類 cls 的物件 class Foo(object): pass obj = Foo() print(isinstance(obj, Foo))
二叉樹的四種遍歷方式:遞迴、非遞迴+棧、Morris(後序非遞迴還有一種單棧和雙棧的不同版本)
本文參考: 參考文章1 參考文章2 程式碼中加入了一些自己的理解 /* 二叉樹的四種遍歷方式 */ #include <iostream> #include <stack> using namespace std; // 二叉樹
jquery中獲取相鄰元素相關的命令:next()、prev()和siblings()
cnblogs lin Language javascrip prev round blog scrip color jquery裏我們要獲取某個元素的相鄰元素時,可以用到的命令有三個: next():用來獲取下一個同輩元素。 prev():用來獲取上一個同輩元素。 sib
轉 linux shell自定義函數(定義、返回值、變量作用域)介紹
shel 自己 lai cell define ber article clas ner linux shell 可以用戶定義函數,然後在shell腳本中可以隨便調用。下面說說它的定義方法,以及調用需要註意那些事項。 一、定義shell函數(define function)
javascript學習筆記(二):定義函數、調用函數、參數、返回值、局部和全局變量
兩個 cnblogs bsp 結果 value ava ase com 調用 定義函數、調用函數、參數、返回值 關鍵字function定義函數,格式如下: function 函數名(){ 函數體 } 調用函數、參數、返回值的規則和c語言規則類似。 1 <!DOC
js獲取元素,窗口的寬度、高度
獲取 order margin window document 元素 wid top borde alert($(window).height()); //瀏覽器時下窗口可視區域高度 alert($(document).height()); //瀏覽器時下窗口文檔的高度 a
Saltstack (modules、返回值cache、syndic、salt-ssh、API)
saltstack modules、返回值cache、syndic\salt-ssh、api接上篇內容redhat6.5server1 172.25.29.1 salt-master server2 172.25.29.2 salt-minion server3 172.25.29.3 salt-mini
pycahrm使用docstrings來指定變量類型、返回值類型、函數參數類型
col 函數 很快 裏的 大量 代碼補全 nic sss def py裏面不需要顯示聲明類型,這和java c這些靜態語言不同,雖然python這樣做少了一些代碼和寫代碼的困難度,但還是非常多的弊端的,運行速度 代碼安全, 這些都是語言本身帶來的本的弊端,這些沒辦法沒辦法彌
python isinstance函數 判斷元素是否是字符串、int型、float型
text font body 內建函數 gpo 1.0 sta 允許 表示 isinstance是Python中的一個內建函數 語法: isinstance(object, classinfo) 如果參數object是classinfo的實例,或者object是cl
SpringMVC返回JSON數據以及文件上傳、過濾靜態資源
SpringMVC 文件上傳 返回JSON數據 過濾靜態資源 返回JSON數據 在如今前後端分離的趨勢下,後端基本不需要再去關心前端頁面的事情,只需要把數據處理好並通過相應的接口返回數據給前端即可。在SpringMVC中,我們可以通過@ResponseBody註解來返回JSON數據或者是XML
python3 isinstance()判斷元素是否是字符串、int型、float型
text false 例如 其他 語法 pan pre div 一個 python3 isinstance()判斷元素是否是字符串、int型、float型 isinstance是Python中的一個內建函數 語法: isinstance(object, classinfo
javaSE引數傳遞問題、返回值問題、內部類總結
思維導圖 引數值傳遞問題 之前我們見到方法傳參一般傳遞的都是基本資料型別的引數,比如我要一個int型別,只需要在呼叫方法的時候傳一個int型別的數值就好了。但是當傳入引數需要一個引用資料型別,那麼該如何考慮呢? 類名作為傳入引數 class Studen
Python 函式。函式的定義。函式的引數、返回值。函式巢狀
demo.py(函式定義): # say_hello() # 不能在定義函式之前呼叫函式 # Python 直譯器知道下方定義了一個函式 def say_hello(): """函式的說明文件""" print("hello 1") print("