Esempio n. 1
0
int main(void) {
    Queue  que;
    char op[5];
                
    QueueInit(&que); /* キューの初期化 */
    //キューの中身を確認
    if(!QueueIsEmpty(&que)){
        printf("初期化失敗\n");
        return (-1);
    }

    while (1) {
        int  m, no;
        char name[NAMELEN];
        Node *data;

        printf("Operation:");
        printf("(1)データの追加(enqueue),(2)データの削除(dequeue), (0) 終了:");
        scanf("%s", op);

        m=atoi(op);

        if (m == 0)
            break;

        switch(m) {
            case 1: data = AllocNode();
                printf("追加するデータを入力してください。\n");
                printf("番号:");scanf("%d", &no);
                printf("名前:");scanf("%s", name);
                SetNode(data,no,name,NULL);
                QueueEnque(&que, data);

                //キューの中身を確認
                if(QueueIsEmpty(&que)){
                    printf("エンキュー失敗\n");
                    return (-1);
                }
                break;    
            case 2: if(data = QueueDeque(&que)) {
                        puts("デキューしたデータ:");
                        printf("番号:%d,名前:%s\n", data->no, data->name);
 //                           free(data);
                        }
                    else {
                        puts("デキューできません。");
                    }
                    break;
        }
        printf("キューの一覧<%d>:\n", QueueNo(&que));
        PrintQueue(&que);
    }

    QueueFree(&que);

    return(0);

}
Esempio n. 2
0
/*
 * Return an ArchReq to arfind.
 */
void
MessageReturnQueueEntry(
	struct QueueEntry *qe)
{
	static char arname[ARCHREQ_NAME_SIZE];
	struct ArchReq *ar;

	ar = qe->QeAr;
	QueueFree(qe);
	(void) ArchReqName(ar, arname);
	ar->ArState = ARS_done;
	(void) ArfindArchreqDone(ar->ArFsname, arname);
	if (ArchReqDetach(ar) == -1) {
		Trace(TR_ERR, "ArchReqDetach(%s) failed", arname);
	}
}
void rsort(int arr[], int len) 
{
  queue *qs[10];
  for (int i = 0; i < 10; i++) qs[i] = QueueNew();

  for (int i = 0; i < 3 ; i++) { // 3 digit mods
    for (int j = 0; j < len; j++) { // array index
      int tmp = arr[j];
      for (int k = 0; k < i; k++) tmp /= 10; // get current digit
      int index = (tmp % 10); // bucket
      QueueAdd(qs[index], arr[j]);
    }
    rcopy(qs, 10, arr, len); // dump back to array
  }
    
  for (int i = 0; i < 10; i++) QueueFree(qs[i]);
}
Esempio n. 4
0
int main()
{
  Queue q;
  QueueNew(&q, sizeof(int));
  int a = 2;
  int b = 3;
  int c = 4;

  QueueEnter(&q, &a);
  QueueEnter(&q, &b);
  QueueEnter(&q, &c);

  int d, e, f;
  QueueDelete(&q, &d);
  printf("%d\n", d);

  QueueDelete(&q, &e);
  printf("%d\n", e);

  QueueDelete(&q, &f);
  printf("%d\n", f);
  
  QueueFree(&q);
}