两个简单的队列和栈的例子
2012-07-18 23:29
351 查看
循环队列的简单程序:
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 256
/***************************************
*定义队列结构
* **************************************/
typedef struct {
int data[MAXSIZE];/*数据类型,其中int可以根据需要进行修改*/
int front; /*队列头指针*/
int rear; /*队列尾指针*/
}SqQueue;
/********************************
*初始化队列
*入口参数:所需初始化队列指针
* *****************************/
int InitQueue(SqQueue *Q)
{
Q->front = 0;
Q->rear = 0;
return 0;
}
/**********************************
* 队列长度
* 入口参数:队列
* 出口参数:队列长度
******************************** */
int QueueLength(SqQueue Q)
{
return((Q.rear-Q.front+MAXSIZE)%MAXSIZE);
}
/*************************************
*入队列
*入口参数:队列,入队列的元素
****** ************************/
int EnQueue(SqQueue *Q,int e)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return -1;
Q->data[Q->rear] = e; /*加入元素*/
Q->rear = (Q->rear + 1)%MAXSIZE; /*尾指针+1*/
return 0;
}
/***********************************
*出队列
*入口函数:队列 出队列的元素指针
* *******************************/
int DeQueue(SqQueue *Q,int *e)
{
if(Q->front == Q->rear) /*队列空。返回错误*/
return -1;
*e = Q->data[Q->front]; /*出队列*/
Q->front = (Q->front + 1)%MAXSIZE; /*队列头指针+1*/
return 0;
}
int main(void)
{
SqQueue *Q;
int a[5]={1,2,3,4,5};
Q = (SqQueue*)malloc(sizeof(SqQueue));
if(NULL == Q){
printf("malloc failed\n");
return -1;
}
int reval;
reval = InitQueue(Q);
if(reval < 0){
printf("error in InitQueue\n");
return -1;
}
reval= EnQueue(Q,a[2]);
if(reval <0){
printf("error in EnQueue");
return -1;
}
printf(" data entry :%d\n",Q->data[Q->rear-1]); //尾数据
int b;
reval = DeQueue(Q,&b);
if(reval<0){
printf("error in DeQueue\n");
return -1;
}
printf("exit queue :%d\n",b);
free(Q);
return 0;
}
栈的简单程序
#include <stdio.h>
#include <malloc.h>
typedef int SElemTYpe;/*元素类型,暂时定义成int*/
#define MAXSIZE 256
/**************************
*栈数据结构
***************************/
typedef struct{
SElemTYpe data[MAXSIZE];
int top;
}SqStack;
/*******************************
*入栈
*入口参数:栈指针,入栈元素
*******************************/
int Push(SqStack *S,SElemTYpe e)
{
if(S->top == MAXSIZE-1)
return -1;
S->top++;
S->data[S->top]=e;
return 0;
}
/*******************************
*出栈
*入口参数:栈指针,出栈元素指针
******************************/
int Pop(SqStack *S,SElemTYpe *e)
{
if(S->top == -1)
return -1;
*e=S->data[S->top];
S->top--;
return 0;
}
/************************
*初始化栈
*入口参数:栈指针
************************/
int InitStack(SqStack *S)
{
S->top = 0;
return 0;
}
int main(void)
{
SElemTYpe a[5]={1,2,3,4,5};
SqStack *S;
S = (SqStack *)malloc(sizeof(SqStack));
if(NULL == S){
printf("malloc error!\n");
return -1;
}
int reval;
InitStack(S);
reval = Push(S,a[4]);
if(reval<0){
printf("PUSH error!\n");
return -1;
}
printf("push data:%d\n",S->data[S->top]);
int b=1;
reval = Pop(S,&b);
if(reval<0){
printf("Pop error \n");
return -1;
}
printf("POP data:%d\n",b);
free(S);
return 0;
}
#include <stdio.h>
#include <malloc.h>
#define MAXSIZE 256
/***************************************
*定义队列结构
* **************************************/
typedef struct {
int data[MAXSIZE];/*数据类型,其中int可以根据需要进行修改*/
int front; /*队列头指针*/
int rear; /*队列尾指针*/
}SqQueue;
/********************************
*初始化队列
*入口参数:所需初始化队列指针
* *****************************/
int InitQueue(SqQueue *Q)
{
Q->front = 0;
Q->rear = 0;
return 0;
}
/**********************************
* 队列长度
* 入口参数:队列
* 出口参数:队列长度
******************************** */
int QueueLength(SqQueue Q)
{
return((Q.rear-Q.front+MAXSIZE)%MAXSIZE);
}
/*************************************
*入队列
*入口参数:队列,入队列的元素
****** ************************/
int EnQueue(SqQueue *Q,int e)
{
if((Q->rear+1)%MAXSIZE==Q->front)
return -1;
Q->data[Q->rear] = e; /*加入元素*/
Q->rear = (Q->rear + 1)%MAXSIZE; /*尾指针+1*/
return 0;
}
/***********************************
*出队列
*入口函数:队列 出队列的元素指针
* *******************************/
int DeQueue(SqQueue *Q,int *e)
{
if(Q->front == Q->rear) /*队列空。返回错误*/
return -1;
*e = Q->data[Q->front]; /*出队列*/
Q->front = (Q->front + 1)%MAXSIZE; /*队列头指针+1*/
return 0;
}
int main(void)
{
SqQueue *Q;
int a[5]={1,2,3,4,5};
Q = (SqQueue*)malloc(sizeof(SqQueue));
if(NULL == Q){
printf("malloc failed\n");
return -1;
}
int reval;
reval = InitQueue(Q);
if(reval < 0){
printf("error in InitQueue\n");
return -1;
}
reval= EnQueue(Q,a[2]);
if(reval <0){
printf("error in EnQueue");
return -1;
}
printf(" data entry :%d\n",Q->data[Q->rear-1]); //尾数据
int b;
reval = DeQueue(Q,&b);
if(reval<0){
printf("error in DeQueue\n");
return -1;
}
printf("exit queue :%d\n",b);
free(Q);
return 0;
}
栈的简单程序
#include <stdio.h>
#include <malloc.h>
typedef int SElemTYpe;/*元素类型,暂时定义成int*/
#define MAXSIZE 256
/**************************
*栈数据结构
***************************/
typedef struct{
SElemTYpe data[MAXSIZE];
int top;
}SqStack;
/*******************************
*入栈
*入口参数:栈指针,入栈元素
*******************************/
int Push(SqStack *S,SElemTYpe e)
{
if(S->top == MAXSIZE-1)
return -1;
S->top++;
S->data[S->top]=e;
return 0;
}
/*******************************
*出栈
*入口参数:栈指针,出栈元素指针
******************************/
int Pop(SqStack *S,SElemTYpe *e)
{
if(S->top == -1)
return -1;
*e=S->data[S->top];
S->top--;
return 0;
}
/************************
*初始化栈
*入口参数:栈指针
************************/
int InitStack(SqStack *S)
{
S->top = 0;
return 0;
}
int main(void)
{
SElemTYpe a[5]={1,2,3,4,5};
SqStack *S;
S = (SqStack *)malloc(sizeof(SqStack));
if(NULL == S){
printf("malloc error!\n");
return -1;
}
int reval;
InitStack(S);
reval = Push(S,a[4]);
if(reval<0){
printf("PUSH error!\n");
return -1;
}
printf("push data:%d\n",S->data[S->top]);
int b=1;
reval = Pop(S,&b);
if(reval<0){
printf("Pop error \n");
return -1;
}
printf("POP data:%d\n",b);
free(S);
return 0;
}
相关文章推荐
- CUDA C++ 简单例子 两个数组求和
- 两个简单例子揭示makefile中“=”和“:=”的区别
- 运行caffe自带的两个简单例子
- 两个简单例子揭示makefile中“=”和“:=”的区别
- 两个简单的例子,带你了解Java中继承和组合的区别
- Linux下两个程序进行socket通信的简单例子
- 简单的j2ee+flex 两个独立工程的通信例子
- 先进先出的两个简单例子
- Linux下两个程序进行socket通信的简单例子
- 两个非常简单的输出随机数的例子
- Java 多线程编程两个简单的例子
- 【Echarts】百度Echarts的使用入门+两个简单的小例子+心得
- 统计工龄 模拟EXCEL排序 银行排队问题之单队列多窗口问题 银行业务队列简单模拟 堆栈操作合法性 两个有序序列的中位数
- MongoDB: 一个简单的配置两个shared的例子
- 运行caffe自带的两个简单例子
- javaEE最简单例子两个属性的用法——action的method和result的name
- 两个简单的小程序例子练练手~
- PHP Sockets编程官方 两个简单例子
- 运行caffe自带的两个简单例子
- java定时器+多线程(池)+java队列的简单小例子