當前位置:首頁 » 編程語言 » c語言隊列入隊
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言隊列入隊

發布時間: 2022-02-09 11:54:23

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--;
}