利用链表创建栈

//利用链表创建栈
#include<time.h>
#include<stdlib.h>
#include<stdio.h>
struct stack_node
{
    int data;
struct stack_node*next;
};
typedef struct stack_node stack_list;
typedef stack_list *link;
link stack=NULL;
//栈数据的存入
int push(int value)
{
   link new_node;
   new_node=(link)malloc(sizeof(stack_list));
   if(!new_node)
   {
      printf("内存分配失败!\n");
  return -1;
}
new_node->data=value;
new_node->next=stack;
stack=new_node;
}
//栈数据的取出
int pop()
{
   link top;
   int temp;
   if(stack!=NULL)
   {
      top=stack;
  stack=stack->next;
  temp=top->data;
  free(top);
  return temp;
}
6
    else
return -1;
}
int empty()
{
   if(stack == NULL)
    return 1;
   else
    return 0;
}
void main()
{
  int card[52];
  int pos;
  int i,temp;
  for(i=0;i<52;i++)
    card[i]=0;
  i=0;
  while(i!=52)
  {
     pos=rand()%52;
 if(card[pos] == 0)
 {
    push(pos);
card[pos]=1;
i++;
 }
  }
  
  printf("  1    2    3    4\n");
  printf("======================\n");
  for(i=0;i<5;i++)
  {
     temp=pop();
 printf("[%c%2d]",temp/13+3,temp%13+1);
 temp=pop();
 printf("[%c%2d]",temp/13+3,temp%13+1);
 temp=pop();
 printf("[%c%2d]",temp/13+3,temp%13+1);
 temp=pop();
 printf("[%c%2d]",temp/13+3,temp%13+1);
 printf("\n");
   }
}

你可能感兴趣的:(利用链表创建栈)