真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言創(chuàng)建循環(huán)隊列主函數(shù) c語言隊列的實現(xiàn)

C語言循環(huán)隊列

很簡單啊,用一個數(shù)組,和2個指針就可以做到這一點,注意,一定要控制好指針,防止寫的東西覆蓋了沒有發(fā)送的東西。

成都創(chuàng)新互聯(lián)主營貢山網(wǎng)站建設的網(wǎng)絡公司,主營網(wǎng)站建設方案,成都APP應用開發(fā),貢山h5微信小程序定制開發(fā)搭建,貢山網(wǎng)站營銷推廣歡迎貢山等地區(qū)企業(yè)咨詢

一個指針控制寫,一個控制輸出。如果走到尾巴 ,就把它移動到數(shù)組的0號元素。如果寫的郭快,趕上了輸出指針就不可以寫?;騽t進行互斥處理,方法太多。不過寫起來浪費時間。

c語言 隊列問題

//改正如下,但是我覺得你那個出隊有點問題,不應當是自己輸入要出隊的元素吧,是讓他自己出隊吧,然后把這個出隊的元素值帶回來,再在主函數(shù)中輸出吧,沒給你改,嘿嘿嘿嘿

#include "stdio.h"

#include "stdlib.h"

#define MAXSIZE 5

typedef struct k

{

int data[MAXSIZE];

int front,rear;

int num;

}c_k; //聲明循環(huán)順序隊列的數(shù)據(jù)類型

//創(chuàng)建循環(huán)隊列

c_k *create_k()

{

c_k * cq=(c_k *)malloc(sizeof(c_k)); //開辟循環(huán)隊列的空間,并將地址存到變量cq中

cq-front=-1;

cq-rear=-1;

cq-num=0;//初始化為空隊列

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

}

int In_ck(c_k * cq,int *x)//-----在傳的時候是個地址,所以這要用int *x-------///如果要用int x的話,在調(diào)用該函數(shù)時就要寫成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;//形成循環(huán)

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

cq-num++;//隊列中元素個數(shù)增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;//形成循環(huán)

*x=cq-data[cq-front];//將隊首元素存到x所指向的變量

cq-num--;//隊列中元素個數(shù)減1

return 1;

}

}

void main()

{

//調(diào)用創(chuàng)建隊列函數(shù)

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); /////---動態(tài)開辟的,用后要用free()釋放;---////

}

C語言編程題,實現(xiàn)一個順序存儲的循環(huán)隊列。

#includestdio.h

#includestdbool.h

#includemalloc.h

typedef

int

typedata;

struct

node

{

struct

node

*prev,

*next;

typedata

data;

};

typedef

struct

node

node;

typedef

struct

node*

link;

//

============init_head===============

//

//頭節(jié)點的初始化

link

init_head(void)

{

link

head

=

(link)malloc(sizeof(node));

if(head

!=

NULL)

{

head-prev

=

head-next

=

head;

}

return

head;

}

//

============newnode

================

//

//創(chuàng)建新節(jié)點

link

newnode(typedata

data)

{

link

new

=

(link)malloc(sizeof(node));

if(new

!=

NULL)

{

//前趨指針和后趨指針都指向自己

new-prev

=

new-next

=

new;

new-data

=

data;

}

return

new;

}

//

=================is_empty================

//

bool

is_empty(link

head)

{

//為空時,頭節(jié)點的前趨指針和后趨指針都指向head(頭節(jié)點)

if((head-next==head)

(head-prev==head))

return

true;

return

false;

}

//

================insert_tail

==================

//

void

insert_tail(link

head,

link

new)

{

if(is_empty(head))

{

//第一個節(jié)點插入

head-next

=

head-prev

=

new;

new-next

=

new-prev

=

head;

return

;

}

//除了第一個節(jié)點插入

new-prev

=

head-prev;

new-next

=

head;

new-prev-next

=

new;

new-next-prev

=

new;

}

//

================show

====================

//

void

show(link

head)

{

//為空時,直接返回

if(is_empty(head))

return

;

//遍歷整個鏈

link

tmp

=

head-next;

while(tmp

!=

head)

{

printf("%d\t",

tmp-data);

tmp

=

tmp-next;

}

printf("\n");

}

//

==============insert_opint

===============

//

void

insert_opint(link

end_node,

link

p)

{

p-prev

=

end_node;

p-next

=

end_node-next;

end_node-next-prev

=

p;

end_node-next

=

p;

}

//

================insertion_sort===========

//

//順序排序

void

insertion_sort(link

head)

{

if(is_empty(head))

return;

//把隊列分拆,頭節(jié)點和第一個節(jié)點為一個已排序的隊列,

//其他的節(jié)點逐個比較已排序隊列插

link

p

=

head-next-next;

head-prev-next

=

NULL;

head-next-next

=

head;

head-next-prev

=

head;

head-prev

=

head-next;

while(p

!=

NULL)

{

link

end_node

=

head-prev;

if(p-data

end_node-data)

{

link

tmp

=

p;

p

=

p-next;

insert_tail(head,

tmp);

}

else

{

while(end_node!=head

p-dataend_node-data)

end_node

=

end_node-prev;

link

tmp

=

p;

p

=

p-next;

insert_opint(end_node,

tmp);

}

}

}

int

main(void)

{

link

head

=

init_head();

if(head

==

NULL)

{

printf("falure\n");

return

0;

}

typedata

data;

while(1)

{

if(scanf("%d",

data)

!=

1

)

break;

link

new

=

newnode(data);

if(new

==

NULL)

{

printf("falure\n");

return

0;

}

insert_tail(head,

new);

show(head);

}

printf("the

figure

is:\n");

show(head);

insertion_sort(head);

show(head);

return

0;

}

C語言,請用數(shù)組作個循環(huán)隊列

a#include

"Stdio.h"

#include

stdlib.h

#include

"Conio.h"

#include

"malloc.h"

#define

TRUE

1

#define

FALSE

#define

INFEASIBLE

1

#define

OVERFLOW

-2

#define

OK

1

#define

ERROR

#define

MAXQSEZE

100

/*最大隊列長度*/

typedef

int

QElemType;

typedef

int

Status;

typedef

struct{

QElemType

*base;

/*初始化的動態(tài)分配存儲空間*/

int

front;

/*頭指針,若隊列不空,指向隊列頭元素*/

int

rear;

/*尾指針,若隊列不空,指向隊列尾元素的下一位置*/

}SqQueue;

Status

Queuelength(SqQueue

*Q){

/*構造一個空的循環(huán)隊列*/

Q-base=(QElemType

*)malloc(MAXQSEZE*sizeof(SqQueue));

if(!Q-base)

exit(OVERFLOW);

/*存儲分配失敗*/

Q-front=Q-rear=0;

return

OK;

}

Status

EnQueue(SqQueue

*Q,QElemType

e){

/*插入元素e為Q的新的隊尾元素*/

if((Q-rear+1)%MAXQSEZE==Q-front)

return

ERROR;/*隊列滿*/

Q-base[Q-rear]=e;

Q-rear=(Q-rear+1)%MAXQSEZE;

return

OK;

}

Status

DeQueue(SqQueue

*Q,QElemType

*e){

/*若隊列不空,則刪除Q的隊頭元素,用e返回其值*/

/*否則返回ERROR*/

if(Q-front==Q-rear)

return

ERROR;

*e=Q-base[Q-front];

Q-front=(Q-front+1)%MAXQSEZE;

return

OK;

}

Status

GetHead(SqQueue

*Q,QElemType

*e){

/*隊列不為空用e返回Q的頭元素,并返回OK,否則返回ERROR*/

if(Q-front==Q-rear)

return

ERROR;

*e=Q-base[Q-front];

return

OK;

}

Status

QueueEmpty(SqQueue

*Q){

/*隊列為空時返回OK否則返回FALSE*/

if(Q-front==Q-rear)

return

OK;

return

FALSE;

}

void

yanghuiTriangle(int

n){

/*打印輸出楊輝三角的錢n(n0)行*/

SqQueue

Q;

char

ch='

';

int

i,k;

QElemType

s,e;

FILE

*fq;

if((fq=fopen("output.txt","w"))==NULL){

/*打開寫入文件*/

printf("error

on

open\n");

exit

(1);

}

Queuelength(Q);

/*創(chuàng)建空的隊列*/

for(i=1;in;i++)

{

printf("

");

fputc(ch,fq);}

/*輸出n個空格以保持三角形的隊形*/

printf("1\n");

fprintf(fq,"%d\n",1);

EnQueue(Q,0);

/*添加第一行末尾的行分界0并入隊*/

EnQueue(Q,1);

/*第二行的兩個1值入隊列*/

EnQueue(Q,1);

k=2;

while(kn){

/*通過循環(huán)隊列輸出第2行到第n-1行的值*/

for(i=1;i=n-k;i++)

{printf("

");

fputc(ch,fq);}

/*輸出n-k個空格以保持三角形*/

EnQueue(Q,0);

do{

/*輸出第k行,計算第k+1行*/

DeQueue(Q,s);

GetHead(Q,e);

if(e)

/*若e為非行分界值0,則打印輸出e的值,并加一空格*/

{printf("%d

",e);

fprintf(fq,"%d%c",e,ch);

}

else

{

printf("\n");

fputc('\n',fq);}

/*回車換行,為下一行輸出做準備*/

EnQueue(Q,s+e);

/*計算所得抵k+1行的值入隊列*/

}while(e!=0);

k++;

}

DeQueue(Q,e);

/*行界值“0“出隊列*/

while(!QueueEmpty(Q)){

/*單獨處理第n行的值的輸出*/

DeQueue(Q,e);

{

printf("%d

",e);

fprintf(fq,"%d%c",e,ch);

}

}

}

int

main(void)

{

FILE

*

fp;

QElemType

n;

if((fp=fopen("input.txt","r"))==NULL){

/*打開寫入文件*/

printf("error

on

open\n");

exit

(1);

}

fscanf(fp,"%d",n);

/*讀入n*/

fclose(fp);

yanghuiTriangle(n);

getch();

return

0;

}

用一個文件輸入一個N,這個數(shù)位楊輝三角的行數(shù)上面是用循環(huán)隊列做的,你看看

數(shù)據(jù)結構(使用C語言)隊列

對順序循環(huán)隊列,常規(guī)的設計方法是使用隊尾指針和隊頭指針,隊尾指針用于指出當前胡隊尾位置下標,隊頭指針用于指示當前隊頭位置下標?,F(xiàn)要求:

(1)設計一個使用隊頭指針和計數(shù)器胡順序循環(huán)循環(huán)隊列抽象數(shù)據(jù)類型,其中包括:初始化,入隊列,出隊列,取隊頭元素肯判斷隊列是否非空;

#include?"stdio.h"

#include?"malloc.h"

#include?"stdlib.h"

#include?"conio.h"

#define?MAX?80

typedef?struct

{

int?data[MAX];

int?front,rear;

int?num;

}SeQue;

SeQue?*Init_SeQue()

{

SeQue?*s;

s=new?SeQue;

s-front=s-rear=MAX-1;

s-num=0;

return?s;

}

int?Empty_SeQue(SeQue?*s)

{

if(s-num==0)

return?1;

else

return?0;

}

int?In_SeQue(SeQue?*s,int?x)

{

if(s-num==MAX)

return?0;

else

{?

s-rear=(s-rear+1)%MAX;

s-data[s-rear]=x;

s-num++;

return?1;

}?

}?

int?Out_SeQue(SeQue?*s,int?*x)

{

if(Empty_SeQue(s))

return?0;

else

{

s-front=(s-front+1)%MAX;

*x=s-data[s-front];

s-num--;

return?1;

}

}

void?Print_SeQue(SeQue?*s)

{

int?i,n;

i=(s-front+1)%MAX;

n=s-num;

while(n0)

{?printf("%d?",s-data[i]);

i=(i+1)%MAX;

n--;

}

}

void?main()

{

SeQue?*s;

int?k,flag,x;

s=Init_SeQue();

do{

printf("\\\");

printf("\\t\\t\\t循環(huán)順序隊列\(zhòng)");

printf("\\t\\t\\t***********************\");

printf("\\t\\t\\t**1-入隊**\");

printf("\\t\\t\\t**2-出隊**\");

printf("\\t\\t\\t**3-判?隊?空**\");

printf("\\t\\t\\t**4-隊列顯示**\");

printf("\\t\\t\\t**0-返回**\");

printf("\\t\\t\\t***********************\");

printf("\\t\\t\\t?請輸入菜單項(0-4):");

scanf("%d",k);

switch(k)

{

case?1:

printf("\請輸入入隊元素:");

scanf("%d",x);

flag=In_SeQue(s,x);

if(flag==0)

printf("\隊滿不能入隊!按任意鍵返回..");

else

printf("\元素已入隊!按任意鍵返回..");

getch();

system("cls");

break;

case?2:

flag=Out_SeQue(s,x);

if(flag==0)

printf("\隊列空出隊失敗!按任意鍵返回..");

else

printf("\隊列頭元素已出隊~!按任意鍵返回..");

getch();

system("cls");

break;

case?3:

flag=Empty_SeQue(s);

if(flag==1)

printf("\該隊列為空!按任意鍵返回..");

else

printf("\該隊列不為空!按任意鍵返回..");

getch();

system("cls");

break;

case?4:

printf("\該隊列元素為:");

Print_SeQue(s);

printf("\按任意鍵返回..");

getch();

system("cls");

break;

}

}while(k!=0);

}


本文名稱:c語言創(chuàng)建循環(huán)隊列主函數(shù) c語言隊列的實現(xiàn)
文章鏈接:http://weahome.cn/article/hiegoi.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部