Ⅰ c语言中使用队列
如果你用vc,#include<deque>就好了,但是注意要加上using naemspace std;
我是当你用的c++的STL,STL中没有真正的队列和栈,他们都是通过对双端队列的改造得到的,所以包含的文件可能和你想的不一样。而且这些头文件都没有.h结尾!很特别
如果你不是vc,当我没说
Ⅱ C语言中队列怎样创建
队列是一种特殊的链表,在你写GET和PUT方法时只需要返回链表的第一个值,把你要输的值放链表的最后就是队列了!!!
Ⅲ c语言队列操作
pq->rear->next
=
pnew这个代码从队列的尾部增加新节点,
然后pq->rear
=
pnew更新队列尾部指针。队列的数据结构形式就是由一个头front指针,一个尾rear指针来表征,items的设计是用空间换时间,涉及队列大小的操作会非常方便。
队列的特征是先进先出,你给出的链式实现,其实就跟一个链表一样,链表的添加删除如果能理解了,队列只是链表的元素增加/删除
按先进先出特点的一种实现。
但对于队列来说,实现方式不是重点,先进先出的性质才是重点,这在实际应用中很多,比如排队叫号。
Ⅳ 队列 c语言程序编程
SeqCQueue queue;
初始化
void init(void)
{
for(int i=0 ; i<=MaxSize ; i++)
queue.data[i] = 0;
queue.front = 0;
queue.rear = -1;
}
插入
void insert(int x)
{
queue.rear ++;
queue.data[queue.rear] = x;
}
void delete(void)
{
queue.data[queue.front] = 0;
queue.front ++;
}
自己直接写的。
main和其他的,自己搞定吧。
Ⅳ 关于C语言的队列
可以使用c++中的容器如queue,头文件在#include <queue>
Ⅵ C语言中,队列是什么意思,有什么用途
队列是一种特殊的线性表。
队列一种可以实现“先进先出”的存储结构,即“一端入,一端出”,队首(front)出队,队尾(rear)入队,若front指向队首,则rear指向队尾最后一个有效元素的下一个元素;若rear指向队尾,则front指向队首第一个有效元素的下一个元素。
队列特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。

(6)队列c语言扩展阅读
循环队列各个参数的含义
1、队列初始化front和rear的值都是零,初始化时队列就是空的。
2、队列非空front代表队列的第一个元素rear代表了最后一个有效元素的下一个元素。
3、队列空front和rear的值相等,但是不一定是零。
Ⅶ 用C语言编写队列程序
#include<stdio.h>
#include<stdlib.h>
#include<malloc.h>
#define TRUE 1
#define FALSE 0
#define NULL 0
#define OK 1
#define OVERFLOW 0
#define ERROR 0
typedef int QElemType;
typedef int Status;
typedef struct QNode
{ 
 QElemType data;
 QNode *next;
}*QueuePtr;
struct LinkQueue
{ 
 QueuePtr front,rear;//队头,队尾指针
};
//函数列表
void InitQueue(LinkQueue &Q)
{//初始化一个队列
 Q.front=Q.rear=(QueuePtr)malloc(sizeof(QNode));
 if(!Q.front)//生成头结点失败
  exit(OVERFLOW);
 Q.front->next=NULL;
}
void DestoryQueue(LinkQueue &Q)
{ //销毁队列
 while(Q.front)
 {
  Q.rear=Q.front->next;//Q.rear指向Q.front的下一个结点
  free(Q.front);//释放Q.front所指结点
  Q.front=Q.rear;//Q.front指向Q.front的下一个结点
 }
}
void ClearQueue(LinkQueue &Q)
{ //将队列清为空
 DestoryQueue(Q);//销毁队列
 InitQueue(Q);//重新构造队列
}
Status QueueEmpty(LinkQueue Q)
{ //判断队列是否为空
 if(Q.front->next==NULL)
  return TRUE;
 else return FALSE;
}
int QueueLength(LinkQueue Q)
{ //求队列的长度
 int i=0;//计数器清0
 QueuePtr p=Q.front;//p指向结点
 while(Q.rear!=p)//p所指向的不是尾结点
 {  
  i++;//计数器加1
  p=p->next;
 }
 return i;
}
Status GetHead(LinkQueue Q,QElemType &e)
{  //若队列不空,则用e返回队头元素
 QueuePtr p;
 if(Q.front==Q.rear) return ERROR;
 p=Q.front->next;//p指向队头结点
 e=p->data;//将队头元素的值赋给e
 return OK;
}
void EnQueue(LinkQueue &Q,QElemType e)
{ //插入元素e为队列Q的新的队尾元素
  QueuePtr p;
     p=(QueuePtr)malloc(sizeof(QNode));
  //动态生成新结点
     if(!p)
     exit(OVERFLOW);
     p->data=e;//将e的值赋给新结点
     p->next=NULL;//新结点的指针为空
     Q.rear->next=p;//原队尾结点的指针域为指向新结点
     Q.rear=p;//尾指针指向新结点
}
Status DeQueue(LinkQueue &Q,QElemType &e)
{ //若队列不为空,删除Q的队头元素,用e返回其值
  QueuePtr p;
     if(Q.front==Q.rear)//队列为空
   return ERROR;
  p=Q.front->next;//p指向队头结点
     e=p->data;//队头元素赋给e
     Q.front->next=p->next;//头结点指向下一个结点
  if(Q.rear==p)//如果删除的队尾结点
   Q.rear=Q.front;//修改队尾指针指向头结点
  free(p);
  return OK;
}
void QueueTraverse(LinkQueue Q,void(*visit)(QElemType))
{ //对队头到队尾依次对队列中每个元素调用函数visit()
  QueuePtr p;
  p=Q.front->next;
  while(p)
  { 
   visit(p->data);//对p所指元素调用visit()
   p=p->next;
  }
  printf("\n");
}
void print(QElemType e)
{
 printf("%2d",e);
}
void main()
{ 
 int i,k;
    QElemType d;
    LinkQueue q;
    InitQueue(q);//构造一个空栈
 for(i=1;i<=5;i++)
 {
  EnQueue(q,i);
 }
 printf("栈的元素为:");
    QueueTraverse(q,print);
    k=QueueEmpty(q);
    printf("判断栈是否为空,k=%d(1:为空9;0:不为空)\n",k);
    printf("将队头元素赋给d\n");
    k=GetHead(q,d);
    printf("队头元素为d=%d\n",d);
    printf("删除队头元素:\n");
    DeQueue(q,d);
    k=GetHead(q,d);
    printf("删除后新的队头元素为d=%d\n",d);
    printf("此时队列的长度为%d\n",QueueLength(q));
    ClearQueue(q);//清空队列
    printf("清空队列后q.front=%u,q.rear=%u,q.front->next=%u\n",q.front,q.rear,q.front->next);
    DestoryQueue(q);
    printf("销毁队列后,q.front=%u,q.rear=%u\n",q.front,q.rear);
Ⅷ 关于数据结构中队列C语言实现
我改了pop函数。
你忘了第一个Q->head 被你指NULL了,而在后面的函数push中你if()中Q->head=Q->prev=current;语句从来没有执行过,所以head一直是指向空的。你可以看看我给你改的调试信息。
#include<stdio.h>
#include<stdlib.h>
typedef struct Qnode
{
int data;
struct Qnode * next;
}Qnode;
typedef struct listquene
{
Qnode * head;
Qnode * prev;
}listquene;
void initquene(listquene * Q)
{
Q->prev=Q->head=(Qnode*)malloc(sizeof(Qnode));
if(!Q->head)
{
Q->prev=Q->head=NULL;
}
}
void push(listquene * Q,int e)
{
Qnode * current;
if(!Q->head)
{
current=(Qnode*)malloc(sizeof(Qnode));
current->data=e;
current->next=NULL;
Q->head=Q->prev=current;
printf("$$$$\n");
}
else
{
current=(Qnode*)malloc(sizeof(Qnode));
current->data=e;
current->next=NULL;
Q->prev->next=current;
Q->prev=current;
printf("###\n");
}
}
int pop(listquene * Q)
{
if(!Q->head)
printf("empty quene can't be deleted!"),exit(1);
else
{
int temp;
Qnode * p;
temp=Q->head->next->data;
p=Q->head;
Q->head=p->next;
if(!Q->head)
Q->prev=NULL;
free(p);
p=NULL;
return temp;
}
}
void initquene(listquene *);
void push(listquene *,int );
int pop(listquene *);
int main()
{
int i;
listquene Q;
initquene(&Q);
push(&Q,1);
push(&Q,2);
push(&Q,4);
push(&Q,8);
printf("%d\n",pop(&Q));
printf("%d\n",pop(&Q));
printf("%d\n",pop(&Q));
printf("%d\n",pop(&Q));
return 0;
}
Ⅸ C语言的队列如何实现和表示
我能想到的有两种方法(假设队列元素都是int)
一,用链表的方法
struct A
{
    int n;
    struct A *a;
} *p,*head,*rear;
head=rear=NULL;/*头指针,尾指针*/
添加元素:p=(struct A*)malloc(sizeof(struct A));......给新元素赋值.....;rear->a=p;rear=p;
当然添加第一个元素的时候要给head赋值。
删除元素:p=head;head=head->a;free(p);
用的是单向链表,当然也可以用双向链表,不过删除,添加元素的过程要麻烦点。
二,利用数组,当然也可以开辟动态储存空间
int a[N],*head,*rear;  N就是个常数
head=rear=a;
添加元素:scanf("%d",rear-a==N?rear=a:++rear);
删除元素:head-a==N?head=a:head++;
当然要检查队列是否溢出,可以设变量n=0;
每次添加元素n++
每次删除元素n--
当n<0后n>N数据溢出
Ⅹ 队列的源代码(c语言)
以前写的.你可以看看咯..
class Queue
{
struct Node
 { 
  int a;
     Node * next; 
 };
public:
 Queue();
 void pump(int b);  
 void pop();        
 int getlength();
 virtual void print();
 
private:
         Node * head;
 Node * rear;
};
void Queue::pump(int b)
{ 
  Node *p1=new Node;
  p1->a=b;
  p1->next=NULL;
  rear->next=p1;
  rear=p1;
  head->a++;
  cout<<setw(2)<<b<<setw(2)<<" 进入队列 "<<endl;
}
void Queue::pop()
{    
  Node *p;
  p=head->next;
  cout<<"  "<<setw(2)<<p->a<<setw(2)<<"出队"<<endl;
  head->next=p->next;
  delete p;
  head->a--;
}
int Queue::getlength()
{
  return head->a;
}
void Queue::print()
{ 
  Node *p;
  p=head->next;
  cout<<"队列中的元素是:"<<endl;
  while(p)
  {
   cout<<p->a<<" -> ";
   p=p->next;
  }
  cout<<"NULL"<<endl;
}
Queue::Queue()
{ 
 rear=head;
};
