H面試(22):設計一個棧,能輸出當前棧中最小元素

來源:互聯網
上載者:User

 

#include<stdio.h>#include<malloc.h>#include<assert.h>struct StcakElement{int data;  //插入的元素的數值int min;  //存放當前棧中最小元素};struct Stack{StcakElement * pStackElement;    //指向棧原始的指標,結合top就能操作棧頂元素int size;    //存放棧的容量           int top;   //存放下一個可用的棧的位置}; void StackInit(Stack* & pstack, int  maxsize )  //棧的初始化 {assert(pstack);    pstack->size = maxsize;pstack->top = 0;pstack->pStackElement =(StcakElement * )malloc(sizeof(StcakElement)*maxsize);}void StackFree (Stack stack)  //將棧銷毀,釋放申請的空間,減size設為0;{free(stack.pStackElement);stack.size = 0;stack.top = 0;}void StackPush(Stack & stack, int data)  //入棧操作,把裡面的一些元素初始化{if(stack.top == stack.size)printf("out of stack space");StcakElement *  p = stack.pStackElement+stack.top;//也可以不用這樣的一個指標變數P,這樣寫是因為後面的實在有點長  p->data = data;if(stack.top == 0){  p->min =data;}else{p->min = (stack.pStackElement[stack.top-1]).min;//如果top不為0,則當前入棧的元素的min存放的是上一個棧頂元素中的最小值;}if(p-> min >data)    //將當前元素和入棧前的最小元素進行比較,如果比之前的的小,就把當前入棧的元素設為自己的datap->min = data;(stack.top)++;}void StackPop(Stack  &stack)//出棧操作{if(stack.top == 0)printf("stack is empty"); stack.pStackElement[--stack.top]; //將指示棧頂原始的值減1}int StackMin(Stack stack)   //找到當前棧頂元素裡存放的當前棧的最小值{if(stack.top == 0)printf("stack is empty");return stack.pStackElement[stack.top-1].min;}int main( ){  Stack stack;    //初始化Stack * pa = & stack ;    StackInit( pa,5);StackPush(*pa,  0);    StackPush(*pa,  5);StackPush(*pa, 3);StackPush(*pa,1);    StackPop(*pa);    int min = StackMin(*pa);printf("棧中當前最小的元素為:%d\n", min);return 0;}

 

 

 

 

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.