当前位置:三九宝宝网 → 宝宝教育 → 教学论文 → 正文

C语言请用数组作个循环队列

更新:03-14 整理:39baobao.com
字体:

[C语言二维数组]/***用二维数组保存学生成绩****/ #include"stdio.h" #define M 100 main() { int i,a[M][2],n,c=0,m=0,max,min; printf("请输入学生记录数:"); scanf("%d",&n); /*********输入每个...+阅读

a#include "Stdio.h" #include#include "Conio.h" #include "malloc.h" #define TRUE 1 #define FALSE 0 #define INFEASIBLE 1 #define OVERFLOW -2 #define OK 1 #define ERROR 0 #define MAXQSEZE 100 /*最大队列长度*/ typedef int QElemType; typedef int Status; typedef struct{ QElemType *base; /*初始化的动态分配存储空间*/ int front; /*头指针,若队列不空,指向队列头元素*/ int rear; /*尾指针,若队列不空,指向队列尾元素的下一位置*/ }SqQueue; Status Queuelength(SqQueue *Q){ /*构造一个空的循环队列*/ 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(n>0)行*/ SqQueue Q; char; int i,k; QElemType s,e; FILE *fq; if((fq=fopen("output.txt","w"))==NULL){ /*打开写入文件*/ printf("error on open\n"); exit(1); } Queuelength(&Q); /*创建空的队列*/ for(i=1;i

c语言数据结构循环队列用顺序结构

c++ //bc_queue.h class Queue { public: virtual BOOLEAN is_empty(void)=0; virtual BOOLEAN is_que_full(void)=0; virtual void build_que(DATA_TYPE str[])=0; virtual void add_que(DATA_TYPE)=0; virtual DATA_TYPE del_from_que(void)=0; virtual int get_que_siz(void)=0; virtual void print_que(void)=0; }; //Ary_Circ_Que.h class Array_Circ_Queue:public Queue{ private: int QUEUE_SIZ; int front_of_queue, rear_of_queue; DATA_TYPE *circ_queue; void init_ary_circ_que(void); public: Array_Circ_Queue(int que_siz); ~Array_Circ_Queue(); BOOLEAN is_empty(void); BOOLEAN is_que_full(void); void build_que(DATA_TYPE str[]); void add_que(DATA_TYPE); //put DATA_TYPE del_from_que(void); //get inline int get_que_siz(){return (QUEUE_SIZ);} void print_que(void); }; //Ary_Circ_Que.cpp // #include typedef int BOOLEAN; const int UNDERFLOW=-1; typedef char DATA_TYPE; #include "bc_queue.h" #include "Ary_Circ_Que.h" Array_Circ_Queue::Array_Circ_Queue(int que_siz) { circ_queue=new DATA_TYPE[QUEUE_SIZ=que_siz]; init_ary_circ_que(); } Array_Circ_Queue::~Array_Circ_Queue() { delete []circ_queue; } void Array_Circ_Queue::init_ary_circ_que(void) { front_of_queue=QUEUE_SIZ; rear_of_queue=QUEUE_SIZ;//maximum size } BOOLEAN Array_Circ_Queue::is_empty(void) { return ((front_of_queue==QUEUE_SIZ)&&(rear_of_queue==QUEUE_SIZ)); } BOOLEAN Array_Circ_Queue::is_que_full(void) { return (((rear_of_queue==0)&&(front_of_queue==QUEUE_SIZ))||(rear_of_queue==(front_of_queue+1))); } void Array_Circ_Queue::add_que(DATA_TYPE new_data) { if(!is_que_full()){ if(rear_of_queue<=0) rear_of_queue=QUEUE_SIZ; if(is_que_empty()) --front_of_queue; circ_queue[--rear_of_queue]=new_data; } else printf("\n add_que: queue overflow\n"); } DATA_TYPE Array_Circ_Queue::del_from_que(void) { if(!is_que_empty()){ if(front_of_queue<0) front_of_queue=QUEUE_SIZ; return (circ_queue[front_of_queue--]); } else { printf("\n del_que: %s ","queue underflow"): return (UNDERFLOW); } } void Array_Circ_Queue::build_que(DATA_TYPE str[]) { if(str[0]=='\0') printf("\n build_que:empty string \n"); else for(int j=0;str[j]!='\0';++j) add_que(str[j]); } void Array_Circ_Queue::print_que(void) { if(is_que_empty()){ if((rear_of_queue=0)){ printf(" c_queue[%i]=%c <-queue front\n ",front_of_queue,circ_queue[front_of_queue]); for(int i=front_of_queue-1;i>=0;i--) printf(" c_queue[%i]=%c \n",i,circ_queue[i]); for(i=QUEUE_SIZ-1;i<=rear_of_queue;i--) printf(" c_queue[%i]=%c \n",i,circ_queue[i]); } else{ //case:rear>0&&front<=rear if(rear_of_queue>0) printf(" c_queue[%i]=%c <-queue front\n ",front_of_queue,circ_queue[front_of_queue]); for(int i=front_of_queue-1;(i>=0&&i<=rear_of_queue);i--) printf(" c_queue[%i]=%c \n",i,circ_queue[i]); } else printf("\n no element in queue.\n"); }

求用循环队列解决约瑟夫环问题的C语言代码急速度!

他们都是用链表做的。。我没用链表做。。。很简单的写了一个。。。

#include

void Fmade(int x, int y, int z);

void main()

{

int a, b, c;

//t i, j, k;

//t aa[100], b[100];

cout<<;"请输入总人数:";

cin>>a;

cout<

cin>>b;

cout<

cin>>c;

Fmade(a, b, c);

}

void Fmade(int x, int y, int z)

{

int i, j=0, k=0;

int aa[100], bb[100];

int start;

aa[0]=0;

for(i=1; i<=x; i++)

{

aa[i]=i;

}

start=y;

while(j < x)

{

while(start <= x)

{

if(aa[start] !=0)

{

k++;

}

if(k == z)

{

bb[j]=aa[start];

aa[start]=0;

j++;

k=0;

}

start++;

}

start=1;

}

cout<<;"出列顺序为:";

for(i=0; i

{

cout<

}

}

说明下:因为这个数组只定义了100个字节。其中第一字节没有用。。所以只能计算99以内的出列。。。包括99,如果需要扩大计算范围,只需要扩大数组长度就行了。。。也就Fmade函数的定义。。。

最够插入运算的答案的图片:

C语言数据结构循环队列

#include

#include

#include

#define LENTH 54

void init_brand(int *array);

int main()

{

int brand[LENTH];

int shuffle[LENTH];

int i, j;

int index;

int random_num;

init_brand(brand);

srand(time(0));

for(i = 0; i != LENTH; i++)

{

index = rand()%(LENTH-i);

j = 0;

random_num = 0;

do

{

if(brand[random_num] != -1)

{

j++;

}

random_num++;

}

while(j != index+1);

shuffle[i] = brand[random_num-1];

brand[random_num-1] = -1;

}

for(i = 0; i != LENTH; i++)

{

if(i == 0 ||

i == 17 ||

i == 35)

{

printf("\n---------------------------------------------\n");

}

printf("%d ", shuffle[i]);

}

return 0;

}

void init_brand(int *array)

{

int i;

for(i = 0; i != LENTH; i++)

{

*(array+i) = i + 1;

}

}

本文地址:https://www.39baobao.com/show/29_48386.html

以上内容来自互联网,请自行判断内容的正确性。若本站收录的信息无意侵犯了贵司版权,请联系我们,我们会及时处理和回复,谢谢.

以下为关联文档:

C语言实验 for循环打印图形循环结构#include "stdio.h" #include "math.h" void main () { int i,j,k,n; printf("输入n\n"); scanf("%d",&n); for(i=1;i<=n;i++) { for(k=1;k<=n-i;k++) printf(" "); for(j=1;j<=2*i-1;j+...

C语言数组排序#include<stdio.h> void main() { int a[10] = { 10,2,3,4,5,6,9,8,7,1 }; int i,j,t; for(j=0;j<10;j++) for(i=0;i<10-1-j;i++) if(a[i]>a[i+1]) /* 由小到大,由大到小时改...

数组排序C语言#include <stdio.h> #include <iostream.h> #include <stdlib.h> #include<time.h> void main() { int a[100],i,c,b,d,e,n; cin>>n; srand((unsigned)time(NULL)); for(i=0...

C语言循环结构x=y=0; //赋初值 x=0;y=0 while(x<15) y++,x+=++y /*当X值小于15的时候做循环y++,x+=++y 其中y++表示y自加,x+=++y等同于x=x+(++y) 其中++y是先自加然后在引用值。 所以此循环...

怎么用 R语言输出循环数组假如不知道数组的元素个数,一般为int数组,或char数组,下面看代码实现要求: #include<stdio.h> void main() { int num[]={1,2,3}; char str[]={'4','5','6'}; for(int i=0;i<siz...

请用C语言:求一个数组中所有元素的和在主函数中检验如果说,数组中保存的是数字,那简单,全部加起来。 如果说,数组中保存的是字符串型数字比如“100”,那你需要把字符串转成数字再相加。 或者还可以把所有字符拼接在一起。 1 2 3 4...

C语言。数组排序函数数组函数排序//#include "stdafx.h"//vc++6.0加上这一行. #include "stdio.h" void Sort(int *p,int n){ int i,j,k; for(i=0;i<10;i++){ for(k=i,j=i+1;j<10;j++) if(p[k]>p[j]) k=j; if(k!...

C语言动态数组数组案例#include #include int main() { int*n,*p; int i; n=(int*)calloc(1,sizeof(int)); for(i=0;i{ n[i]=i+1; printf(%d\t,n[i]); p=(int*)realloc(n,(i+2)*sizeof(int));//动态...

C语言数组定义C语言数组定义,怎么用C语言定义一个无限长的数组:可以,但有可能会出现“truncation from 'const double' to 'float'”的警告,比如: #include <stdio.h> void main() { int i,j;...