C——自定义栈

#include <stdlib.h>
#include <stdio.h>

//定义栈中只能放5个元素。
#define N 5

struct MyStack
{
int index;
int arr[ N ];
};

struct MyStack myStack = { -1, {0} };


//栈中插入数据。返回0,插入失败。返回1,插入成功。
int push(int num){
if (myStack.index + 1 >= N){
return 0;
}
myStack.arr[++myStack.index] = num;
return 1;
}

//取出栈中的数据。用这个方法之前要先判断栈中是否为空。
int pop(){
if (myStack.index < 0){
return 0;
}
return myStack.arr[myStack.index--];
}

//栈中是否为空。返回1,为空。返回0,为非空。
int isEmpty(){
if (myStack.index == -1){
return 1;
}
return 0;
}

//设置栈为空
void setEmpty(){
myStack.index = -1;
}


int main(){

int arr[] = {1,2,3,4,5,6,7,8,9};

int length = sizeof(arr) / sizeof(int);

for (size_t i = 0; i < length; i++)
{
if (push(arr[i])){
printf("第%d个元素是%d插入成功。\n", i, arr[i]);
}
else{
printf("第%d个元素是%d插入失败。\n", i, arr[i]);
}
}
if (isEmpty()){
printf("栈为空\n");
}
else{
printf("栈不为空\n");
}

while (!isEmpty())
{
printf("数据为:%d\n",pop());
}

if (isEmpty()){
printf("栈为空\n");
}
else{
printf("栈不为空\n");
}

system("pause");
return 0;
}

 

posted @ 2015-11-16 08:54  戴帽的和尚  阅读(220)  评论(0)    收藏  举报