c语言建立队列函数 c语言队列的用法

如何用C语言建立一个空队列?

简单点的话

创新互联是一家集成都做网站、网站设计、网站页面设计、网站优化SEO优化为一体的专业网站设计公司,已为成都等多地近百家企业提供网站建设服务。追求良好的浏览体验,以探求精品塑造与理念升华,设计最适合用户的网站页面。 合作只是第一步,服务才是根本,我们始终坚持讲诚信,负责任的原则,为您进行细心、贴心、认真的服务,与众多客户在蓬勃发展的市场环境中,互促共生。

直接用数组模拟就行了吧

简单写了一下:

/******************************

author : delta

version: 1.0

date : 2010-8-31

*******************************/

#include stdio.h

#include memory.h

#define debug 1

#define MaxN 1024

struct queue {

int q[MaxN];

int front;

int rear;

// initial the queue

void initial() {

front = 0;

rear = 0;

memset(q, 0, sizeof(q));

}

// judge wether the queue is empty or not

bool empty() {

return front == rear;

}

// insert an element

void push(int x) {

if (rear == MaxN) {

printf("The queue is fool !\n");

}

q[rear] = x;

++rear;

}

// delete an element

void pop() {

if (empty()) {

printf("There is no element in the queue !\n");

}

++front;

}

// look up the first element

int top() {

if (empty()) {

printf("There is no element in the queue !\n");

}

return q[front];

}

};

int main()

{

#if debug

int x;

struct queue q;

q.initial();

q.push(1);

q.push(2);

x = q.top();

printf("q's first elememt is: %d\n", x);

q.pop();

printf("q is %s\n", q.empty()?"empty":"not empty");

q.push(3);

x = q.top();

printf("q's first element is: %d\n", x);

q.initial();

printf("q is %s\n", q.empty()?"empty":"not empty");

#endif

return 0;

}

c语言 队列问题

//改正如下,但是我觉得你那个出队有点问题,不应当是自己输入要出队的元素吧,是让他自己出队吧,然后把这个出队的元素值带回来,再在主函数中输出吧,没给你改,嘿嘿嘿嘿

#include "stdio.h"

#include "stdlib.h"

#define MAXSIZE 5

typedef struct k

{

int data[MAXSIZE];

int front,rear;

int num;

}c_k; //声明循环顺序队列的数据类型

//创建循环队列

c_k *create_k()

{

c_k * cq=(c_k *)malloc(sizeof(c_k)); //开辟循环队列的空间,并将地址存到变量cq中

cq-front=-1;

cq-rear=-1;

cq-num=0;//初始化为空队列

return cq;//返回队列的地址

}

int In_ck(c_k * cq,int *x)//-----在传的时候是个地址,所以这要用int *x-------///如果要用int x的话,在调用该函数时就要写成In_ck(cq,rear_x)--//

{

if(cq-num==MAXSIZE)//队列已满

{

printf("The c_k is full!\n");return -1;

}

else//队列不满

{

cq-rear=(cq-rear+1)%MAXSIZE;//形成循环

cq-data[cq-rear]=*x;/////------传的是地址,所以这要用*x----/////

cq-num++;//队列中元素个数增1

return 1;

}

}

//出队

int Out_ck(c_k * cq, int *x)//对cq所指向的队列出队,将队首元素存到x所指向的变量,并返回是否出队成功

{

if(cq-num==0)//队列为空

{

printf("The k is null!\n");return -1;

}

else//队列非空

{

cq-front=(cq-front+1)%MAXSIZE;//形成循环

*x=cq-data[cq-front];//将队首元素存到x所指向的变量

cq-num--;//队列中元素个数减1

return 1;

}

}

void main()

{

//调用创建队列函数

c_k * cq=create_k();

int rear_x,front_x;

int op,result;

printf("\n请输入 1入队,2出队,3退出:\n");

scanf("%d",op);

while(op!=3)

{

switch(op)

{

case 1:printf("请入入队元素:\n");

scanf("%d",rear_x);////----这要加号,!!!!!

if((result=In_ck(cq,rear_x))==1)////----加了一个if语句,在队空时就不输出元素了-----////

printf("入对元素是 %d\n",rear_x);

break;

case 2:printf("请输入出队元素:\n");

scanf("%d",front_x);////----这要加号,!!!!!

if ((result= Out_ck(cq,front_x))==1)////----加了一个if语句,在队空时就不输出元素了-----////

printf("出对元素是 %d\n",front_x);

break;

}

printf("\n请输入 1入队 2出队 3退出:\n");scanf("%d",op);

}

free(cq); /////---动态开辟的,用后要用free()释放;---////

}

队列的建立与查询【用C语言编写的完整程序(包括main()函数】

我的理解是 你想用数组模拟 队列?不是的话下面不用看,回复我给我再说一下题意,我重新给你写!

首先输入一个操作,1入队,2出队,3退出

如果是1,再输入一个将要入队列的 数据,

#include stdio.h

#include stdlib.h

#include string.h

#define LEN 1000

int queue[LEN], fir, end;

void printQueue()

{

int i = 0;

for(i = fir; i end; ++ i)

{

printf("%d ", queue[i]);

}

printf("\n");

}

void insertQueue()

{

int value = 0, i = 0;

printf("Enter the data which you want to insert to queue...\n");

scanf("%d", value);

queue[end ++] = value;

printQueue();

}

void deleteQueue()

{

printf("after delete the top data!\n");

fir ++;

printQueue();

}

void demo()

{

int Number = 0;

while(1)

{

printf("Enter the number:\n");

printf("1.insert...\n");

printf("2.delete...\n");

printf("3.exit!\n");

scanf("%d", Number);

if(Number 1 || Number 4) return;

switch(Number)

{

case 1: insertQueue(); break;

case 2: deleteQueue(); break;

case 3: exit(0);

default: return;

}

}

}

void creatQueue()

{

int i = 0;

fir = 0, end = 0;

for(i = 0; i LEN; ++ i)

{

queue[i] = 0;

}

}

int main()

{

creatQueue();

demo();

return 0;

}


分享名称:c语言建立队列函数 c语言队列的用法
本文路径:http://azwzsj.com/article/dogeeoh.html