1. 程式人生 > >C語言實現棧操作

C語言實現棧操作

                                                                            

如果把棧看成一個標尺,每個元素對應了一個刻度

#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);
}
說白了top標誌陣列的下標