码迷,mamicode.com
首页 > 其他好文 > 详细

数据结构之堆栈

时间:2018-07-03 20:11:05      阅读:200      评论:0      收藏:0      [点我收藏+]

标签:stdio.h   creates   create   sem   实现   struct   int   max   argc   

1.线性表实现堆栈

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

#define maxsize 100

typedef enum{true,false
}bool;
typedef struct SNode * Stack;
typedef int ElementType;

//定义堆栈结构
struct SNode{
  ElementType data[maxsize];
  int top;
};


//生成空堆栈
Stack createStack(){
  Stack stack=(Stack)malloc(sizeof(struct SNode));
  stack->top=0;
}

// 判断堆栈是否已满
bool isFull(Stack s){
  if(s->top==maxsize){
    return true;
  }
  return false;
}

//入栈
bool push(Stack s,ElementType e){
  if(s->top==maxsize){
    printf("栈满\n");
    return false;
  }
  else{
    s->data[s->top]=e;
    s->top++;
    return true;
  }
}

//出栈
ElementType pop(Stack s){
  if(s->top==0){
    printf("栈空\n");
    return ;
  }
  ElementType e=s->data[s->top-1];
  s->top--;
  return e;
}

//判断是否为空
bool isEmpty(Stack s){
  if(s->top==0){
  return true;
  }
  return false;
}

int main(int argc, char *argv[]) {
  Stack stack=createStack();
  if(isEmpty(stack)==true){
  printf("空栈\n");
  }
  push(stack,1);
  push(stack,2);
  push(stack,3);
  push(stack,4);
  push(stack,5);
  if(isEmpty(stack)==false){
    printf("不是空栈\n");
  }
  int length=stack->top;
  for(int i=0;i<length;i++){
    printf("%d\t",pop(stack));
  }
  if(isEmpty(stack)==true){
    printf("空栈\n");
  }
  return 0;
}

数据结构之堆栈

标签:stdio.h   creates   create   sem   实现   struct   int   max   argc   

原文地址:https://www.cnblogs.com/hsiaolung/p/9259989.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!