第三章:栈和队列
2010-12-13 20:49
260 查看
栈:是限制仅在表的一端进行插入和删除运算的线性表,通常称插入.删除的这一端为栈顶,另一端为栈底,当表中没有元素是称为空栈。
栈的基本运算有六种:
(1) IntStack(s);//构造一个空栈。
(2)StackEmpty(s);//判栈空。
(3)StackFull(s);//判栈满。
(4)Push(s,x);//进栈。
(5)Pop(s);//退栈。
(6)StackTop(s);//取栈顶元素。
链栈:栈的链式存储结构。
队列:也是一种运算首先得线性表,它只允许在表的一端进行进入,而在另一端进行删除。允许删除的一段为队头,允许插入的一段称为队尾。
顺序队列的基本运算:
#ifndef dui
typedef struct
{
int front;//头指针
int rear;//尾指针
int count;//计数器,记录队中元素总数。
char data[100];
}cirqueue;
void initqueue(cirqueue *q);
int queueempty(cirqueue *q);
int queuefull(cirqueue *q);
void enqueue(cirqueue *q,char x);
char dequeue(cirqueue *q);
char queuefront(cirqueue *q);
#endif
#include <stdio.h>
#include <malloc.h>
#include "dui.h"
//指空队。
void initqueue(cirqueue *q)
{
q->rear=q->front=0;
q->count=0;
}
//判队空。
int queueempty(cirqueue *q)
{
return q->count==0;
}
//判队满。
int queuefull(cirqueue *q)
{
return q->count==100;
}
//入队
void enqueue(cirqueue *q,char x)
{
//if(queuefull(q))
// printf("duiman");
//else
// {
q->count++;
q->data[q->rear]=x;
q->rear=(q->rear+1)%100;
//}
}
//出队
char dequeue(cirqueue *q)
{
char temp;
//if(queueempty(q))
// { printf("duiman");
/// return 0;}
// else
// {
temp=q->data[q->front];
q->count--;
q->front=(q->front+1)%100;
return temp;
//}
}
//取队头元素。
char queuefront(cirqueue *q)
{
return q->data[q->front];
}
#include <stdio.h>
#include "dui.h"
main()
{
void initqueue(cirqueue *q);
int queueempty(cirqueue *q);
int queuefull(cirqueue *q);
void enqueue(cirqueue *q,char x);
char dequeue(cirqueue *q);
char queuefront(cirqueue *q);
cirqueue q;
char temp,t;
initqueue(&q);
printf("对是否为空? %s/n",queuefull(&q)? "bukong":"kong");
printf("入队a:/n");
enqueue(&q,'a');
printf("入队b:/n");
enqueue(&q,'b');
printf("入队c:/n");
enqueue(&q,'c');
printf("入队d:/n");
enqueue(&q,'d');
printf("取队头:");
t=queuefront(&q);
printf("%c/n",t);
printf("出队:");
while(!queueempty(&q))
{
temp=dequeue(&q);
printf("%c/n",temp);
}
}
栈的基本运算有六种:
(1) IntStack(s);//构造一个空栈。
(2)StackEmpty(s);//判栈空。
(3)StackFull(s);//判栈满。
(4)Push(s,x);//进栈。
(5)Pop(s);//退栈。
(6)StackTop(s);//取栈顶元素。
链栈:栈的链式存储结构。
队列:也是一种运算首先得线性表,它只允许在表的一端进行进入,而在另一端进行删除。允许删除的一段为队头,允许插入的一段称为队尾。
顺序队列的基本运算:
#ifndef dui
typedef struct
{
int front;//头指针
int rear;//尾指针
int count;//计数器,记录队中元素总数。
char data[100];
}cirqueue;
void initqueue(cirqueue *q);
int queueempty(cirqueue *q);
int queuefull(cirqueue *q);
void enqueue(cirqueue *q,char x);
char dequeue(cirqueue *q);
char queuefront(cirqueue *q);
#endif
#include <stdio.h>
#include <malloc.h>
#include "dui.h"
//指空队。
void initqueue(cirqueue *q)
{
q->rear=q->front=0;
q->count=0;
}
//判队空。
int queueempty(cirqueue *q)
{
return q->count==0;
}
//判队满。
int queuefull(cirqueue *q)
{
return q->count==100;
}
//入队
void enqueue(cirqueue *q,char x)
{
//if(queuefull(q))
// printf("duiman");
//else
// {
q->count++;
q->data[q->rear]=x;
q->rear=(q->rear+1)%100;
//}
}
//出队
char dequeue(cirqueue *q)
{
char temp;
//if(queueempty(q))
// { printf("duiman");
/// return 0;}
// else
// {
temp=q->data[q->front];
q->count--;
q->front=(q->front+1)%100;
return temp;
//}
}
//取队头元素。
char queuefront(cirqueue *q)
{
return q->data[q->front];
}
#include <stdio.h>
#include "dui.h"
main()
{
void initqueue(cirqueue *q);
int queueempty(cirqueue *q);
int queuefull(cirqueue *q);
void enqueue(cirqueue *q,char x);
char dequeue(cirqueue *q);
char queuefront(cirqueue *q);
cirqueue q;
char temp,t;
initqueue(&q);
printf("对是否为空? %s/n",queuefull(&q)? "bukong":"kong");
printf("入队a:/n");
enqueue(&q,'a');
printf("入队b:/n");
enqueue(&q,'b');
printf("入队c:/n");
enqueue(&q,'c');
printf("入队d:/n");
enqueue(&q,'d');
printf("取队头:");
t=queuefront(&q);
printf("%c/n",t);
printf("出队:");
while(!queueempty(&q))
{
temp=dequeue(&q);
printf("%c/n",temp);
}
}
相关文章推荐
- 第三章栈和队列结构导图
- 第三章 栈和队列练习题
- 数据结构(C语言版)---第三章栈和队列 3.2.4 迷宫求解
- 第三章 栈和队列
- 第三章:表、栈和队列
- 数据结构 第三章-- 链队列
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列02 链式栈操作
- <数据结构> 第三章 栈和队列 思维导图
- 数据结构 第三章 栈和队列
- 第三章:栈与队列(思维导图)
- 第三章队列知识导图
- 《数据结构》第三章 栈和队列 实验
- 《数据结构与算法分析:C语言描述》复习——第三章“线性表、栈和队列”——双向链表
- 《数据结构》严蔚敏版(java解)——第三章 栈和队列03 顺序队列操作
- 数据结构 第三章 栈和队列 思维导图
- (实验三)《数据结构》第三章 循环队列与链队列验证
- 第三章 栈与队列
- 第三章 栈和队列
- 数据结构(C语言版)---第三章栈和队列 3.4.2 队列的链式表示和实现(循环队列)
- 《数据结构与算法分析:C语言描述》复习——第三章“线性表、栈和队列”——队列