C語言實現棧操作
阿新 • • 發佈:2019-01-11
如果把棧看成一個標尺,每個元素對應了一個刻度
說白了top標誌陣列的下標#include<stdio.h> #include<stdlib.h> #define N 10 struct stack { int top;//記錄棧中有多少個元素,data[top]表示棧頂 int data[N]; }; struct stack mystack= { -1,{0} };//-1代表棧中沒有元素,{0}將陣列全部初始化為0 //判斷棧是否為空。1代表棧為空,0代表不為空 int isempty() { if(mystack.top==-1) { return 1; } else { return 0; } } //設定棧為空 void setempty() { mystack.top=-1; } //壓入一個數據,成功返回1,失敗返回0(棧溢位) int push(int data) { if(mystack.top+1<=N-1) {//沒有溢位 mystack.data[++mystack.top]=data; return 1; } else { return 0; } } //取出一個數組 int pop() { if(isempty()) { return -1;//為空,返回-1 } else { return mystack.data[mystack.top--]; } } //一個測試,將十進位制數轉化為二進位制 void tenToTwo(int n){ if(n==0){ return; }else{ int m=n%2; tenToTwo(n/2); printf("%d ",m);//打印出來的是逆序的 } } main(){ // int a[10]; // for(int i=0;i<10;i++){ // a[i]=i+1; // } // for(int i=0;i<10;i++){ // push(a[i]);//壓人資料 // } // while(isempty()!=1){ // printf("%d\n",pop()); // } tenToTwo(100); }