A. 数据结构c语言版,出队入队及依次输出一个队列的操作。
黑色的提示框是程序运行结果窗口,不是错误的窗口
代码错误说明如下:
while(Q->front!=Q->rear)//在本循环体之中,Q->frontQ->rear的值始终没有变化
//故而在这里肯定是一个死循环
{
printf("%d,",Q->front->next->data);
Q->front->next=Q->front->next->next;
}
//改正后的代码如下:
QNode*s=Q->front;
while(s!=Q->rear)
{
printf("%d,",s->data);
s=s->next;
}
另外,所有的函数当中不应该有exit
exit是一个系统函数,表示结束程序,而不是退出函数
如果需要退出函数可以使用return来达到该目的
B. 试写出循环队列出队、入队的算法(用C语言给出主要部分即可)
#define Max 300
typedef struct
{
int tail,head;
int a[Max];
}queue;
void enqueue(int key,queue&q)
{
q.a[q.tail]=key;
q.tail=(q.tail+1)%Max;
}
int dequeue(queue&q)
{
int key;
key=q.a[q.head];
q.head=(q.head+1)%Max;
return key;
}
用了c++引用。。。。。。没有入队前的判断是否满了以及出队前判断是否为空,这个你应该懂的
C. 在循环队列中怎样实现入队和出队操作 数据结构 C语言
有个比较死板的经验:把所有需要操作的变量改成指针SqQueue &Q改成SqQueue *Q,比如把所有的.改成->(因为用C语言需要指针操作);例如
int InitQueue(SqQueue *Q)
{
Q->base=(char *)malloc(MAXSIZE*sizeof(Elemtype));
if(Q->base==NULL) exit(0);
Q->front=Q->rear=0;
return 1;
} //初始化一个循环队列;
D. C语言用数组实现循环队列的入队出队
//定义一个int型数组que,长度为N(常量切大于2).
intque[N];
intrear=0,front=0;//队尾队头
判断队列已满:
if((front+1)%N==rear%N)//成立则队列已满
判断队列为空
if((rear==front))//成立则队列空
入队(一般在入队前判断队列是否已满)
//将val入队
que[front++]=val;
front%=N;
出队(一般在出队前判断队列是否为空)
rear=(rear+1)%N;
下一个要出队的元素(一般先判断是否为空)
que[rear];
E. C语言入队只入一个元素怎么弄
你好,一个元素入队也按照队列的先进先出,后进后出原则,我和你说一下思考吧。代码要自己动手实践操作,那样才能提高。首先,队列的基本结构,用结构体定义队的基本结构,队头指针,队尾指针,以及队的最大容量。然后入队,只有一个元素入队,先出来的还是它。写入队和出队的操作,注意要判断队满和队空的条件,像队头-队尾=最大容量啊这些。最后你需要写一个输出队列的算法,不是太难,希望你动手操作下。 如果还满意的话,给个采纳,谢谢。
F. 请教C语言中顺序队列入队中求余运算是什么意思
这个是个循环队列头尾相接的,取余保证数字下标在size以内
G. 如何才能C语言编程实现出队与入队急!!!
#include <assert.h>
#include <iostream.h>
#ifndef POINTQUEUE
#define POINTQUEUE
template <class Type> class Queue; //前视声明
template <class Type>
class QueueNode
{
friend class Queue<Type>;
private:
Type data; //队列结点数据
QueueNode<Type> *link; //结点链指针
QueueNode(Type d=0,QueueNode *l=NULL):data(d),link(l){};
};
template <class Type>
class Queue
{
public:
Queue():rear(NULL),front(NULL),length(0){};
~Queue();
void EnQueue(const Type &item);
Type DeQueue();
Type GetFront();
void MakeEmpty(){ Distroy();front=rear=NULL; }
int Length(){ return length;}
bool IsEmpty()const { return front==NULL; }
private:
QueueNode<Type> *front, *rear; //队列指针
int length;
void Distroy();
};
template <class Type>
Queue<Type>::~Queue() //队列的析构函数
{
Distroy();
}
template <class Type>
void Queue<Type>::EnQueue(const Type &item) //将新元素item插入到队列的队尾
{
length++;
if(front==NULL)
front=rear=new QueueNode<Type>(item,NULL);
else
rear=rear->link=new QueueNode<Type>(item,NULL);
}
template <class Type>
Type Queue<Type>::DeQueue() //删去队头结点,并返回队头元素的值
{
assert(!IsEmpty()); //判队空的断言
length--;
QueueNode<Type> *p = front;
Type retvalue=p->data; //保存队头的值
front=front->link; //新队头
delete p;
return retvalue;
}
template <class Type>
Type Queue<Type>::GetFront() //若队不空,则函数返回队头元素的值
{
assert(!IsEmpty());
return front->data;
}
template <class Type>
void Queue<Type>::Distroy()
{
QueueNode<Type> *p;
while(front!=NULL) //逐个结点释放
{
p=front;
front=front->link;
delete p;
}
}
#endif
#include "pointqueue.h"
int main()
{
// Queue<int> qu(10);
Queue<int> qu;
int i;
for(i=0;i<10;i++)
qu.EnQueue(i*10-3);
cout<<qu.Length()<<endl;
for(i=0;i<10;i++)
cout<<qu.DeQueue()<<' ';
return 1;
}
H. C语言链队列的入队与出队,求高手帮我看下!我要如何该
一塌糊涂啊
typedef struct node1
{
point rear,front; // 这里应该用指针类型
}sun;
起的名字太随心所欲了,实在不会起,至少可以用拼音啊
I. 求用C语言做队列的出对和入队
//定义队列结构体
typedef struct Qnode
{
int data;
struct Qnode *next;
} Queue , *QueuePtr;
typedef struct
{
QueuePtr front;
QueuePtr rear;
} linkQnode;
//创建一个队列
initQueue (linkQnode *q)
{
q -> front = q -> rear = (QueuePtr) malloc (sizeof (Queue));
if (!q -> front) exit (0);
q -> front -> next = NULL;
}
//入队列
EnterQueue (linkQnode *q , int item)
{
QueuePtr p;
p = (QueuePtr) malloc (sizeof (Queue));
if (!p) exit (0);
p -> data = item;
p -> next = NULL;
q -> rear -> next = p;
q -> rear = p;
}
//出队列
DelQueue (linkQnode *q , int *item)
{
QueuePtr p;
if (q -> front = q -> rear) return;
p = q -> front -> next;
*item = p -> data;
q -> front -> next = p -> next;
if (q -> rear == p)
q -> rear = q -> front;
free (p);
}
J. C语言,用数组实现队列的入队,出队函数编程
这样的话应该符合你的要求:
#include<stdio.h>
voidadd(intqueue[],intx);
intTop(intqueue[]);
voiddel(intqueue[]);
intend=0;
intmain()
{
intn;
scanf("%d",&n);//将要入队列n个元素
intqueue[1000];
for(inti=1;i<=n;i++)//输入n个元素
{
add(queue,i);//将i加入队列
}
//验证加入队列的元素,将队列中的元素按照输入的顺序输出:
for(i=1;i<=n;i++)
{
printf("%d",Top(queue));//Top函数返回队头元素
del(queue);//删除队头元素
}
//验证输出已经出队列后的队列(数组)元素:
printf(" ");
for(i=1;i<=n;i++)
printf("%d",queue[i]);
printf(" ");
return0;
}
voidadd(intqueue[],intx)
{
queue[++end]=x;
}
intTop(intqueue[])
{
returnqueue[1];//注意,这里的函数始终returnqueue[1];这里是和将普通数组中的元素输出最大的不同之处。!!!!!!
}
voiddel(intqueue[])
{
for(inti=2;i<=end;i++)
{
queue[i-1]=queue[i];
}
queue[end]=0;//将删除后的地方置0
end--;
}