数据结构和算法实验指导书 下载本文

WORD格式可编辑 }

void move(char x,char y) /* 定义move函数 */ {

printf(\ }

四、实验报告要求 1、撰写实验报告;

2、对实验中出现的问题和结果进行总结。

专业知识分享

WORD格式可编辑 实验四 队列的实现和应用

一、实验目的

1、掌握队列的建立方法;

2、掌握队列的基本操作,如出队、入队、判断队空等; 3、队列的应用。 二、实验内容

1、顺序队列的初始化 2、判断队列是否为空 3、顺序队列出队 4、顺序队列入队

5、队列的应用--回文判断 三、实验提示

1、//队列的基本操作,按提示将函数补充完整 #include #include #define STACK_MAX 100

typedef struct{ int front, rear;

int data1[STACK_MAX]; } Queue;

void initQueue (Queue *q) /*初始化队列*/ {

q->front=q->rear=0; }

int EmptyQueue(Queue *q)/*判断队列空*/ {

if(q->front==q->rear)

return 1; //1代表空 else

return 0; //0代表非空 }

int DeQueue(Queue *q) /*出队列*/ {

if(q->rear==q->front) //判断需要出队时队列是否为空 {

printf(\当前队列已经空了。\ exit(0); } else {

专业知识分享

WORD格式可编辑 return q->data1[q->front++]; //将队头原素出列然后队头指针加一 } }

void InQueue(Queue *q,int data) /*入队列*/ {

if(q->rear==STACK_MAX) //判断需要入队时队列是否已满 {

printf(\当前队列空间已满。\ exit(0); } else {

q->data1[q->rear]=data; //入队 q->rear++; } }

int main() {

Queue q;

initQueue(&q);

InQueue(&q,1); InQueue(&q,2); InQueue(&q,3);

printf(\ printf(\ printf(\ }

2、//判断给定的字符序列是否是回文(提示:将一半字符入栈) #include #include #define STACK_MAX 100 typedef struct{ int top;

int data[STACK_MAX]; } stack;

专业知识分享

WORD格式可编辑 typedef struct{ int front, rear;

int data1[STACK_MAX]; } Queue;

void init(stack *st) /*初始化顺序栈*/ {

st->top=0; }

int Empty(stack *st)/*判断栈空*/ {

if(st->top==0) return 1; else

return 0; } }

int pop(stack *st) /*出栈*/ {

if(st->top==0) {

printf(\栈已空!\ exit(0); } else {

char c;

c=st->data[--st->top]; return (int)c; } }

void push(stack *st,int data) /*入栈*/ {

if(st->top==STACK_MAX-1) {

printf(\栈已空!\ exit(0); } else {

st->data[st->top++]=data; } }

void initQueue (Queue *q) /*初始化队列*/ {

专业知识分享