同时使用一个栈和一个队列

#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
   4:  
   5:  
/*将char类型定义为ElemType*/
   7:  
/*定义队列结点类*/
   9:     ElemType data;
struct QNode *next;
  11: } QNode , *QueuePtr;
  12:  
/*定义一个链队列*/
/*队头指针*/
/*队尾指针*/
  16: } LinkQueue;
  17:  
/*定义一个栈类型*/
  19:     ElemType *base;
  20:     ElemType *top;
int stacksize;
  22: } sqStack;
  23:  
  24:  
void initQueue(LinkQueue *q) {
/*初始化一个空队列*/
/*创建一个头结点,队头队尾指针                                                                指向该结点*/
  28:  
/*创建头结点失败*/
  30:  
/*头结点指针域置NULL*/
  32: }
  33:  
/*入队列操作*/
  35:     QueuePtr p;
/*创建一个队列元素结点*/
  37:  
/*创建头结点失败*/
  39:  
/*将元素e入队列*/
/*修改队尾指针*/
  42:     q->rear ->next = p;
  43:     q->rear = p;
  44: }
  45:  
void DeQueue(LinkQueue *q, ElemType *e) {
/*如果队列q不为空,删除q的队头元素,用e返回其值*/
  48:     QueuePtr p;
  49:  
/*队列为空,返回*/
  51:  
  52:     p = q->front->next;
  53:     *e = p->data;
  54:     q->front->next = p->next;
  55:  
/*如果队头就是队尾,则修改队尾指针*/
  57:  
  58:     free(p);
  59: }
  60:  
void initStack(sqStack *s)
  62: {
/*内存中开辟一段连续空间作为栈空间,首地址赋值给s->base*/
sizeof(ElemType));
  65:  
/*分配空间失败*/
  67:  
/*最开始,栈顶就是栈底*/
/*最大容量为STACK_INIT_SIZE */
  70: }
  71:  
/*入栈操作*/
if(s->top - s->base >= s->stacksize) {
/*栈满,追加空间*/
  75:         s->base = (ElemType *)realloc(s->base, (s->stacksize +
sizeof(ElemType));
  77:  
/*存储分配失败*/
  79:  
  80:         s->top = s->base + s->stacksize;
/*设置栈的最大容量*/
  82:     }
  83:  
/*放入数据*/
  85:     s->top++;
  86: }
  87:  
/*出栈操作*/
/*将栈顶元素弹出*/
  90:  
/*修改栈顶指针*/
  92: }
  93:  
/*获得栈s的大小*/
return (s.top - s.base) ;
  96: }
  97:  
  98:  
int main()
 100: {
 101:     sqStack s;
 102:     LinkQueue q;
 103:     ElemType e, r1, r2;
int flag = 1, i, len;
 105:  
/*初始化一个队列*/
/*初始化一个栈*/
);
, &e);
 110:  
/*输入待判断的字符序列*/
 112:         Push(&s, e);
 113:         EnQueue(&q, e);
, &e);
 115:     }
 116:  
/*获得字符序列的长度*/
 118:  
for(i = 0; i < len; i++)
 120:     {
/*出栈操作,由r1将栈顶元素返回*/
/*出队列操作,由r2将队头元素返回*/
 123:  
if(r1 != r2) {
 125:             flag = 0;
break;
 127:         }
 128:     }
 129:  
);
) ;
 132:  
return 0;
 134:  
 135: }
 136:  

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-22
  • 2021-08-01
  • 2022-12-23
  • 2021-10-23
  • 2021-12-11
猜你喜欢
  • 2022-12-23
  • 2021-10-10
  • 2021-08-30
  • 2021-11-28
  • 2021-06-19
相关资源
相似解决方案