キューに関する

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
mimi

キューに関する

#1

投稿記事 by mimi » 3年前

insert(),top()関数はどのように記載すればよいのでしょう。
#include <stdio.h>
#include <stdlib.h>

#define QMAX 20 //最大要素数
#define LOWER 10 //乱数の下限
#define UPPER 90 //乱数の上限

typedef struct {
int box[QMAX+1];
int front, rear;
} Queue;

void initialize(Queue *q)
{
q->front = 1;

q->rear = 0;
}

////////////////////////////////////////////////////////////
//関数:insert()
//機能:キューの末尾に新しい要素を挿入する
//キューの末尾に要素が挿入され、rearが
// 新しい末尾の添え字である。
////////////////////////////////////////////////////////////
void insert(Queue *q, int item)
{
//①キューの末尾メンバrearが1増やす
//自分のコードはここから

//②キューのメンバboxのrear番目にitemを入れる
//自分のコードはここまで
return;
}

void qdelete(Queue *q)
{
(*q).front = (*q).front + 1;
}

int empty(Queue *q)
{
if(q->rear < q->front)
return 1;
else
return 0;
}

///////////////////////////////////////////////////////////
//関数:top()
//機能:キューの先頭(トップ)の要素を求める
///////////////////////////////////////////////////////////
int top(Queue *q)
{
int p;

//キューのboxメンバの中、frontで示している要素の値を返す
//自分のコードはここから

//自分のコードはここまで
return p;
}
void print_result(int a[], int n)
{
int i;

for (i = 1; i <= n; i++) {
printf("%d\n", a);
}
}
int randAB(int a, int b)
{
int r;

r = a+(int)(rand()*(b-a+1.0)/(1.0+RAND_MAX));

return r;
}
void main(void)
{
int c,data;
Queue q;

initialize(&q);

for(c=0;c<QMAX;c++){
data = randAB(LOWER,UPPER);
printf("%d\n",data);
insert(&q,data);
}
//print_result(q.box, QMAX);
while (!empty(&q)){
printf(" %d ", top(&q));
qdelete(&q);
}
printf("\n");
}

“C言語何でも質問掲示板” へ戻る