注册 登录
编程论坛 C语言论坛

入队列输入1234,出队列输出1234,C语言,帮忙。

qwerqqq 发布于 2020-05-25 11:56, 3442 次点击
9 回复
#2
林月儿2020-05-25 12:00
链表还是数组
#3
qwerqqq2020-05-25 12:02
回复 2楼 林月儿
链表
#4
静夜思2020-05-25 13:02
以下是引用林月儿在2020-5-25 12:00:02的发言:

链表还是数组
楼主已经给出答案了,是链表,然后呢?
#5
静夜思2020-05-25 13:12
#6
林月儿2020-05-25 14:40
定义链表结构体,然后1进1出2进2出3进3出
typedef struct node{
int dara;
struct node*next;
}node;
#7
静夜思2020-05-25 14:50
以下是引用林月儿在2020-5-25 14:40:15的发言:

定义链表结构体,然后1进1出2进2出3进3出
typedef struct node{
int dara;
struct node*next;
}node;

至少给个能运行的样例吧,这样楼主能看得懂吗?能看得懂的回来问这样的问题吗?
#8
静夜思2020-05-25 15:02
我在15还是16年的时候,多次说过本论坛对版主和贵宾不设防,对版主和贵宾100%的信任,因为我相信,能到版主贵宾这个位置的,不会在论坛特别是技术区胡来。
从某种意义上说,这是一种特权,许诺这种特权的初衷是版主、贵宾不受任何约束,以便于自由发挥。但愿这种特权不要被极少数人玩烂了。
#9
吕孟伟2020-05-25 15:57
程序代码:
#include<stdio.h>
#include<malloc.h>
#include<stdbool.h>
#include<stdlib.h>
#define length 100
typedef struct Queue{
    int* pBase;
    int front;
    int rear;
}QUEUE, *PQUEUE;
void init_queue(PQUEUE pQueue);
bool is_full(PQUEUE pQueue);
bool is_empty(PQUEUE pQueue);
bool enter_queue(PQUEUE pQueue, int value);
bool out_queue(PQUEUE pQueue, int* value);
void traverse_queue(PQUEUE pQueue);


int main(void)
{
    QUEUE myqueue;
    init_queue(&myqueue);
    enter_queue(&myqueue, 1);
    enter_queue(&myqueue, 2);
    enter_queue(&myqueue, 3);
    enter_queue(&myqueue, 4);
    traverse_queue(&myqueue);
    int value1, value2, value3, value4;
    out_queue(&myqueue, &value1);
    out_queue(&myqueue, &value2);
    out_queue(&myqueue, &value3);
    out_queue(&myqueue, &value4);
    printf("%d %d %d %d\n", value1, value2, value3, value4);
    return 0;
}

void init_queue(PQUEUE pQueue)
{
    pQueue->pBase = (int*)malloc(sizeof(int)* length );//数组
    pQueue->front = 0;
    pQueue->rear = 0;
}
bool is_full(PQUEUE pQueue)
{
   
    if((pQueue->rear+1) % length == pQueue->front){
        return true;
    }else{
        return false;
    }
}
bool is_empty(PQUEUE pQueue)
{
    if(pQueue->front == pQueue->rear){
        return true;
    }else{
        return false;
    }
}
bool enter_queue(PQUEUE pQueue, int value)
{
   
    if(is_full(pQueue)){
        return false;
    }else{
        pQueue->pBase[pQueue->rear] = value;
        pQueue->rear = (pQueue->rear+1) % length;
        return true;
    }
}
void traverse_queue(PQUEUE pQueue)
{
   
    int i = pQueue->front;
    while(pQueue->rear != i){
        printf("%d ", pQueue->pBase[i]);
        i = (i+1) % length;
    }
    printf("\n");
}
bool out_queue(PQUEUE pQueue, int* value)
{
   
    if(is_empty(pQueue)){
        return false;
    }else{
        *value = pQueue->pBase[pQueue->front];
        pQueue->front = (pQueue->front+1) % length;
    }
}
#10
qwerqqq2020-05-25 16:00
谢谢
1