西安交大朱站立《数据结构——使用C语言》头文件系列——顺序队列

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

本顺序队列工程包含2个头文件(StackCode.h、Queue.h)和一个源文件(Queue.cpp),本处对之前系列之二的堆栈的头文件做了小小的修改,以便完全对应书中内容。依然是存为word以便使用

头文件1 StackCode.h

typedef struct

{

DataType stack[MaxStackSize];

int top;

}SeqStack;

void StackInitiate(SeqStack *S)//初始化顺序堆栈

{

S->top=0;

}

int StackNotEmpty(SeqStack S)//判断堆栈是否为空

{/*为空返回0,非空返回1*/

if(S.top<=0) return 0;

else return 1;

}

int StackPush(SeqStack *S,DataType x)//入栈

{

if (S->top>=MaxStackSize)

{

printf("堆栈已满无法插入!\n");

return 0;

}

else

{

S->stack[S->top]=x;

S->top++;

return 1;

}

}

int StackPop(SeqStack *S,DataType *d)//出栈

{

if(S->top<=0)

{

printf("堆栈已空无法弹出!\n");

return 0;

}

else

{

S->top--;

*d=S->stack[S->top];

return 1;

}

}

int StackTop(SeqStack S,DataType *d)//取栈顶元素{

if (S.top<=0)

{

printf("堆栈已空!\n");

return 0;

}

else

{

*d=S.stack[S.top-1];

return 1;

}

}

头文件2 Queue.h

//定义结点结构体

typedef struct qnode

{

DataType queue[MaxQueueSize];

int rear; /*队尾指针*/

int front; //队头指针

int count; //计数器

}SeqCQueue;//顺序队列

void QueueInitiate(SeqCQueue *Q) //初始化{

Q->rear=0; //定义初始队尾指针下标值Q->front=0; //定义初始队头指针下标值Q->count=0; //定义书初始计数器值

}

int QueueNotEmpty(SeqCQueue Q)

{//判断是否非空,空返回0,非空返回1

if(Q.count!=0) return 1;

else return 0;

}

int QueueAppend(SeqCQueue *Q,DataType x)

{//将x插入队尾,成功返回1,失败返回0

if(Q->count>0 && Q->rear==Q->front)//判断队列是否满了{

printf("队列已满无法插入!\n");

return 0;

}

else

{

Q->queue[Q->rear]=x;

Q->rear=(Q->rear+1) % MaxQueueSize;

Q->count++;

return 1;

}

}

int QueueDelete(SeqCQueue *Q,DataType *d)

{

if(Q->count==0)

{

printf("队列已空无法出列!\n");

return 0;

}

else

{

*d=Q->queue[Q->front];

Q->front=(Q->front+1) % MaxQueueSize;

Q->count--;

return 1;

}

}

int QueueGet(SeqCQueue Q,DataType *d)

{

if(Q.count==0)

{

printf("队列已空无数据可取!\n");

return 0;

}

else

{

*d=Q.queue[Q.front];

return 1;

}

}

测试主函数Queue.cpp

#include

#include

#define MaxQueueSize 100

#define MaxStackSize 100

typedef char DataType;//定义具体应用的数据类型

#include "Queue.h"

#include "StackCode.h"

void HuiWen(char str[])

{//判断是否回文的函数

SeqCQueue myQueue;

SeqStack myStack;

char x,y;

int i,length;

length=strlen(str);

QueueInitiate(&myQueue);

StackInitiate(&myStack);

for(i=0;i

{

QueueAppend(&myQueue,str[i]);

StackPush(&myStack,str[i]);

}

while (QueueNotEmpty(myQueue)==1 && StackNotEmpty(myStack) == 1)

{

if(QueueDelete(&myQueue,&x)==1 && StackPop(&myStack,&y)==1 && x!=y)

{

printf("%s不是回文!\n",str);

return;

}

}

if(QueueNotEmpty(myQueue) || StackNotEmpty(myStack))

printf("%s不是回文!\n",str);

else

printf("%s是回文!\n",str);

}

相关文档
最新文档