堆栈的实现

来源:互联网 发布:抢单app源码 编辑:程序博客网 时间:2024/05/17 08:00
 堆栈
后进先出
基本的操作有:push(入堆) pop(弹出)
入堆:将数据放入到堆栈的顶部

弹出:将顶端的数据输


#include<stdio.h>#include <stdio.h>#include <stdlib.h>typedef struct Stk{  int Array[10];  int Top;} Stack;int stack_empty(Stack *Stack1){  if(Stack1->Top==0)  {    return 1;              }       else  {    return 0;      }}void push(Stack *Stack1,int x){  Stack1->Top=Stack1->Top+1;  Stack1->Array[Stack1->Top]=x;         }int pop(Stack *Stack1){  if(stack_empty(Stack1))  {    printf("underflow");  }  else  {    Stack1->Top=Stack1->Top-1;    return Stack1->Array[Stack1->Top+1];      }}int main(){  Stack *Stack1=(Stack *)malloc(sizeof(Stack));  Stack1->Top=0;  push(Stack1,3);  push(Stack1,4);  push(Stack1,1);  push(Stack1,10);  printf("%d ",pop(Stack1));  printf("%d ",pop(Stack1));  printf("%d ",pop(Stack1));}


如果不想用数组预先分配好内存空间,Stack 结构体内用×Array指针来表示

可以更改一下代码:“

#define N 10typedef struct Stk{  int *Array;  int Top;} Stack;

int main(){  Stack *Stack1=(Stack *)malloc(sizeof(Stack));  Stack1->Array = (int *)malloc(sizeof(int) * N);  Stack1->Top=0;  push(Stack1,3);  push(Stack1,4);  push(Stack1,1);  push(Stack1,10);  printf("%d ",pop(Stack1));  printf("%d ",pop(Stack1));  printf("%d ",pop(Stack1));}

不过这种也是预先分配好内存,只不过先分配结构体的内存,然后分配结构体内部Array的内存。

0 0
原创粉丝点击