链队列与堆栈操作

问题描述]
   有一批整数,将它们进入以空队列(链队列)


#include <stdio.h>
#include <stdlib.h>
 typedef struct Qnode
 { int  data;
 struct Qnode *next;
 } QueueNode;
  
 
 
 typedef struct
   {QueueNode *front,*rear;
   }LinkQueue;
     typedef struct Snode
  {  int  data;
  struct Snode*next;
  } StackNode;

 
 
typedef StackNode *LinkStack;
LinkQueue InitQueue()
{LinkQueue q;
QueueNode *p;
p=(QueueNode*)malloc(sizeof(QueueNode));
p->next=NULL;
q.front=q.rear=p;
return(q);}

int QueueEmpty(LinkQueue q)
{  return(q.front==q.rear);
}
 
 void AddQueue(LinkQueue *q,int e)
 { QueueNode *p;
 p=(QueueNode*)malloc(sizeof(QueueNode));
 p->data=e;
 p->next=NULL;
 q->rear->next=p;
 q->rear=p;}

 

 int DeleteQueue(LinkQueue *q)
 {  int e;
 QueueNode *p;
 if (QueueEmpty(*q))
 return(0);
 else
 {
  p=q->front->next;
 q->front->next=p->next;
 e=p->data;
 if(q->rear==p)   q->rear=q->front;
 free(p);
 return(e);
 }   }

 

LinkStack StackInit()
{ LinkStack  s;
s=(LinkStack)malloc(sizeof(StackNode));
s->next=0;
return s;}

 

int StackEmpty(LinkStack s)
{ if(s->next )
return(0);
else
return(1);}

 

void Push(LinkStack  s, int e)
{StackNode*p;
p=(StackNode*)malloc(sizeof(StackNode));
p->data=e;
p->next=s->next;
s->next=p;}
 


int Pop(LinkStack s)
{  int e;
  StackNode *p;
  if(StackEmpty(s))
   return(0);
    else
 {p=s->next;
 s->next=p->next;
 e=p->data;
 free(p);
 return(e);
}
}

 

 main()
 {   int x;
 LinkQueue *q;
 LinkStack s;
 q=(LinkQueue*)malloc(sizeof(LinkQueue));
 *q=InitQueue();
 s=StackInit();
 printf("  enter the  values:");
 scanf("%d",&x);
 printf("enter the values:");
 
 while(x!=0)
 {Push(s,x);
 AddQueue(q,x);
 scanf("%d",&x);

 }

 printf ("the values out of the queue:/n");
   while(!QueueEmpty(*q))
    printf("%d   ",DeleteQueue(q));
   printf("/n The value out of the stack:/n");
     while(!StackEmpty(s))
   printf("%d ", Pop(s) );
 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值