當前位置:首頁 » 編程軟體 » 編程實現出隊

編程實現出隊

發布時間: 2022-07-19 17:42:42

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

2. 試寫出循環隊列出隊、入隊的演算法(用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++引用。。。。。。沒有入隊前的判斷是否滿了以及出隊前判斷是否為空,這個你應該懂的

3. 在循環隊列中怎樣實現入隊和出隊操作 數據結構 C語言

入隊操作
功能:將元素 x 插入到Q的隊尾。
演算法:Status EnQueue(SqQueue &Q, QElemType e) {
if ((Q.rear+1) % MaxQsize == Q.front) return ERROR; // 隊列滿
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1) % MaxQsize;
return OK;
}
出隊操作
功能:刪除Q的隊頭元素,並返回其值。
演算法: Status DeQueue(SqQueue &Q, QElemType &e) {
if (Q.front == Q. rear) return ERROR; // 隊列空
e = Q.base[Q.front];
Q.front=(Q.front+1) % MaxQsize;
return OK;
}

4. c語言實現出隊入隊,輸入0表示出隊,輸入-1表示程序結束,其餘整數表示入隊,隊列空或滿,操作錯誤

#include<stdio.h>

#include<string.h>

#include<windows.h>

#defineMAX_STACK100

voidmain()

{

charchstr[100];

charstack[MAX_STACK];

intcur_pos=-1;

while(1)

{

system("cls");

printf("-----------------------隊列操作------------------------- ");

printf("***0:POP***-1:GAMEOVER***1-9:PUSH ");

printf("Example: ");

printf("0[ENTER]-1[ENTER]1abcd[ENTER]或者2abcd[ENTER] ");

fflush(stdin);

gets(chstr);

if(chstr[0]=='-'&&chstr[1]=='1'&&strlen(chstr)==2)

break;

elseif(chstr[0]=='0'&&strlen(chstr)==1)

{

if(cur_pos==-1)

{

printf("%%error:stackempty,cannotpop! ");

continue;

}

cur_pos--;

printf("pop[%c]out ",stack[cur_pos+1]);

}

elseif(chstr[0]>='1'&&chstr[0]<='9')

{

intp=1;

while(chstr[p]!=0&&cur_pos<MAX_STACK)

{

cur_pos++;

stack[cur_pos]=chstr[p++];

printf("push[%c]in ",chstr[p-1]);

if(cur_pos==MAX_STACK-1&&chstr[p]!=0)

{

printf("%%error:cannnotpush[%c]:stackfull ",chstr[p]);

break;

}

}

}

else

printf("%%error:Unknowoperation! ");

}

}

5. 如何才能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;
}

6. 數據結構c語言版,出隊入隊及依次輸出一個隊列的操作。

#include<stdio.h>
#include<stdlib.h>

#defineElemTypeint
#defineStatusint
#defineOK1
#defineERROR0

typedefstructQNode{
ElemTypedata;
structQNode*next;
}QNode;

typedefstructLinkQueue{
QNode*front;
QNode*rear;
}LinkQueue;

StatusInitQueue(LinkQueue*q){//建立隊列
q->front=q->rear=(QNode*)malloc(sizeof(QNode));
if(!q->front)
returnERROR;
q->front->next=NULL;
returnOK;
}

StatusEnQueue(LinkQueue*q,ElemTypee){//入隊
QNode*p=(QNode*)malloc(sizeof(QNode));
if(!p)
returnERROR;
p->data=e;
p->next=NULL;
q->rear->next=p;//入隊操作,從隊尾(rear)進入
q->rear=p;
returnOK;
}

StatusDeQueue(LinkQueue*q,ElemType*e){//出隊
QNode*p=(QNode*)malloc(sizeof(QNode));
if(!p)
returnERROR;

p=q->front->next;//q指向的是front指針的下一個位置,亦即隊首元素
*e=p->data;
q->front->next=p->next;//出隊操作後,front++
if(q->rear==p)//判斷是否全部出隊
q->rear=q->front;//如果全部出隊,則將隊列置為空
returnOK;
}

StatusPrintfQueue(LinkQueue*Q){
QNode*p;

for(p=Q->front->next;p!=NULL;p=p->next)
printf("%d ",p->data);
}

intmain(void)
{
inti,n;
ElemTypee,de;
LinkQueue*q=(LinkQueue*)malloc(sizeof(QNode));
if(!q)
returnERROR;
InitQueue(q);

printf("以下開始構造初始隊列: ");

printf("請輸入元素個數:");
scanf("%d",&n);
printf(" ");

for(i=0;i<n;++i){
printf("請輸入第%d個元素:",i+1);
scanf("%d",&e);
EnQueue(q,e);
}
printf(" ");
printf("初始隊列構造完畢! ");

printf("初始隊列: ");
PrintfQueue(q);
printf(" ");
printf("====================================================== ");

printf("以下開始執行入隊操作: ");

printf("請輸入需入隊的元素個數:");
scanf("%d",&n);
printf(" ");

for(i=0;i<n;++i){
printf("請輸入第%d個元素:",i+1);
scanf("%d",&e);
EnQueue(q,e);
}
printf(" ");
printf("入隊%d個元素操作完畢! ",n);

printf("此時隊列: ");
PrintfQueue(q);
printf(" ");
printf("====================================================== ");

printf("以下開始執行出隊操作: ");

printf("請輸入需出隊的元素個數:");
scanf("%d",&n);
printf(" ");

for(i=0;i<n;++i)
DeQueue(q,&de);
printf(" ");
printf("出隊%d個元素操作完畢! ",n);

printf("此時隊列: ");
PrintfQueue(q);
printf(" ");
printf("====================================================== ");

free(q);
return0;
}

執行結果

7. 用c語言編寫12345的入隊,然後出隊

#include "stdafx.h"
#include "stdio.h"
#include "malloc.h"
#define MAX 8
static int Queen[8][8];
static int a=1;
typedef struct
{
int *elem;
int top;
}ColStack;//棧:存放每一行放置皇後的列號

void InitQueen()
{
int i,j;
for(i = 0; i < 8; i++)
{
for(j = 0; j < 8; j++)
{
Queen[i][j] = 0;
}
}
}

int InitStack(ColStack &CS)//初始化棧
{
CS.elem = (int *)malloc(MAX*sizeof(int));
if(!CS.elem) return 0;
CS.top = -1;
return 1;
}

int Push(ColStack &CS, int e)//進棧
{
if(CS.top >= 8) return 0;
CS.top++;
CS.elem[CS.top] = e;
return 1;
}

int Pop(ColStack &CS, int &e)//退棧
{
if(CS.top == -1)return 0;
e = CS.elem[CS.top];
CS.top--;
return 1;
}

int Back(ColStack &CS,int &e)//回溯
{
Pop(CS,e);
Queen[CS.top+1][e] = 0;
if(e == 7 && CS.top == -1)
{
return 0;
}
if(e == 7 && CS.top != -1)
{
Back(CS,e);
}
return 1;
}

int OK(int i, int j)//檢查(i,j)上能否放棋子
{
int k, m;
for(k = i; k >= 0; k--)//檢查同列
{
if(Queen[k][j] == 1) return 0;
}
k = i; m = j;
while(k >= 0 && m >= 0)
{
if(Queen[k][m] == 1) return 0;
k--; m--;
}
k = i; m = j;
while(k >= 0 && m < 8)
{
if(Queen[k][m] == 1) return 0;
k--;m++;
}
return 1;
}
//進入本函數時,在8*8棋盤前i-1行已放置了互不攻
// 擊的i-1個棋子。現從第 i 行起繼續為後續棋子選擇
// 滿足約束條件的位置。當求得(i>8)的一個合法布局
// 時,輸出之。

int queen(int i, ColStack &CS, int start)
{
int j, k,e;
if(i>=8)
{
printf("第%d種情況:\n",a);
for(j = 0; j < 8; j++)
{
for(k = 0; k < 8; k++)
{
if(Queen[j][k] == 0)
{
printf("# ");
}
else
{
printf("@ ");
}
}
printf("\n");
}
a++;
}else
{
for(j = start+1; j < 8; j++)
{
if(OK(i,j) == 1)
{
Queen[i][j]=1;
Push(CS,j);
queen(i+1,CS,-1);
return 1;
}
}
}
if(j == 8)
{
if(Back(CS,e) == 1)
{
queen(CS.top+1,CS,e);
}
if(Back(CS,e) == 0)
{
return 1;
}
}
}
int main()
{
InitQueen();
ColStack cs;
InitStack(cs);
queen(0,cs,-1);
return 0;
}

這是一個八皇後問題,是個典型的出隊列、入隊列問題

熱點內容
帶鎖的鉛筆如何改密碼 發布:2025-02-07 06:18:05 瀏覽:163
ubuntu搭建samba伺服器 發布:2025-02-07 05:52:54 瀏覽:54
小型企業網如何配置可以互通 發布:2025-02-07 05:33:56 瀏覽:243
09年crv哪個配置好 發布:2025-02-07 05:17:31 瀏覽:555
nvm源碼編譯 發布:2025-02-07 05:13:19 瀏覽:126
防偽碼查詢源碼 發布:2025-02-07 05:09:39 瀏覽:769
安卓機的通知在哪裡 發布:2025-02-07 05:09:01 瀏覽:282
密碼74是什麼意思 發布:2025-02-07 05:02:10 瀏覽:47
蘋果es瀏覽器無法連接ftp 發布:2025-02-07 04:59:57 瀏覽:285
javaa和a 發布:2025-02-07 04:58:24 瀏覽:64