c에서 연결 목록을 사용하여 구현 된 큐의 요소를 표시하는 방법은 무엇입니까?

Nithur

연결된 목록을 사용하여 대기열을 구현했습니다. 표시 기능은 마지막 요소 만 인쇄합니다. 하지만 모든 요소를 ​​표시하고 싶습니다. 누군가 그것을 고칠 수 있습니까? 디스플레이 기능을 작성하는 다른 방법은 무엇입니까? 노드 선언이 잘못 되었습니까?

내 코드는 다음과 같습니다.


#include <stdio.h>
#include <stdlib.h>

typedef int QueueElement;
typedef enum {TRUE,FALSE} Boolean;

typedef struct node{
    QueueElement entry;
    struct node *next;
} Node;

typedef struct{
    int count;
    Boolean full;
    Node *front;
    Node *rear;
} Queue;

void createQueue(Queue *q){
    q->count=0;
    q->front=q->rear=NULL;
    q->full=FALSE;
}

Boolean IsFull(Queue *q){
    return (q->full);
}

Boolean IsEmpty(Queue *q){
    return (q->front==NULL && q->rear==NULL);
}

void insert(QueueElement x,Queue *q){
    Node *np;
    np=(Node*)malloc(sizeof(Node));
    if(np==NULL){
        printf("Not enough memory\n");
        q->full=TRUE;
    }
    else{
        np->entry=x;
        np->next=NULL;
        if(IsEmpty(q))
            q->front=q->rear=np;
        else{
            q->rear->next=np;
            np=q->rear;
        }
        ++q->count;
        printf("Inserted %d\n", x);
    }
}

void Remove(Queue *q){
    Node *np;
    if(IsEmpty(q))
        printf("Queue is empty\n");
    else{
        q->count--;
        int x=q->front->entry;
        np=q->front;
        q->front=q->front->next;
        if(q->front==NULL)
            q->rear=NULL;
        free(np);
        printf("Removed %d\n",x);
    }
}

void display(Queue q){
    //if(IsEmpty(q))
       // printf("Queue is empty\n");

    Node *iter = q.front;
    while(iter) {
        printf("%d ", iter->entry);
        iter = iter->next;
    }
}

int main()
{
    Queue q;
    createQueue(&q);
    Remove(&q);
    insert(1,&q);
    insert(2,&q);
    insert(3,&q);
    insert(4,&q);
    Remove(&q);
    display(q);

    return 0;
}

내 디스플레이 기능은 다음과 같습니다.

void display(Queue q){
    //if(IsEmpty(q))
    //    printf("Queue is empty\n");

    Node *iter = q.front;

    while(iter) {
        printf("%d ", iter->entry);
        iter = iter->next;
    }
}
니켈 프로

의견은 이미 문제를 발견했지만 이에 대한 답변을 제공합니다.

에서 insert함수를 다음 줄 문제입니다 :

np=q->rear;

해야한다:

q->rear=np;

예상대로 작동합니다.

Queue is empty
Inserted 1
Inserted 2
Inserted 3
Inserted 4
Removed 1
2 3 4

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

React에서 맵을 사용하여 렌더링 된 구성 요소 목록의 특정 구성 요소를 수정하는 방법은 무엇입니까?

분류에서Dev

연결된 목록 구현을 사용하여 스택에서 요소를 팝할 수없는 이유는 무엇입니까?

분류에서Dev

목록을 쉼표로 구분 된 요소의 시퀀스로 변환하는 방법은 무엇입니까?

분류에서Dev

연결된 목록을 사용하여 큐를 구현하는 동안 NullPointerException이 발생했습니다.

분류에서Dev

c에서 연결된 목록 내부의 구조체에 대한 메모리를 할당하는 방법은 무엇입니까?

분류에서Dev

QML에서 다른 QAbstractListModel의 요소에 따라 목록을 구현하는 방법은 무엇입니까?

분류에서Dev

함수에서 첫 번째 요소가 제거 된 후 연결된 목록의 pHead를 업데이트하는 방법은 무엇입니까?

분류에서Dev

bash를 사용하여 쉼표로 구분 된 항목을 포함하여 목록의 모든 항목을 인쇄하는 방법은 무엇입니까?

분류에서Dev

apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

분류에서Dev

C #의 자체 서명 된 인증서를 사용하여 Xamarin Android 애플리케이션을 Azure에 연결하는 방법은 무엇입니까?

분류에서Dev

Java의 연결된 목록에서 유일한 노드를 제거하는 방법은 무엇입니까?

분류에서Dev

스타일이 지정된 구성 요소를 사용하여 포커스에 <input> 요소의 스타일을 지정하는 방법은 무엇입니까?

분류에서Dev

목록에서 정의 된 값을 가진 요소를 제거하는 방법은 무엇입니까?

분류에서Dev

하나의 방법을 사용하여 연결된 jquery에서 이벤트를 바인딩 해제하는 방법은 무엇입니까?

분류에서Dev

javascript 또는 angular js를 사용하여 목록의 각 항목에 대해 다른 도구 설명을 표시하는 방법은 무엇입니까?

분류에서Dev

파이썬에서 연결된 일부 구성 요소를 제거하는 방법은 무엇입니까?

분류에서Dev

연결 목록을 사용하는 다음 큐 구현의 오류는 무엇입니까?

분류에서Dev

연결된 목록에 CSV 파일의 내용을 저장하는 방법은 무엇입니까?

분류에서Dev

XSD를 사용하여 목록 1 값에서 목록을 요구하는 방법은 무엇입니까?

분류에서Dev

C ++에서 연결된 목록을 사용한 큐 구현

분류에서Dev

Jsoup을 사용하여 '태그 이름'의 요소 목록에 대한 HTML 문서를 구문 분석하는 방법은 무엇입니까?

분류에서Dev

C에서 여러 요소로 이중 연결 목록을 정렬하는 방법은 무엇입니까?

분류에서Dev

WebScript를 사용하여 데이터 목록에서 연결을 얻는 방법은 무엇입니까?

분류에서Dev

충돌을 피하기 위해이 해시 함수와 함께 연결된 목록 구현을 사용하는 방법은 무엇입니까?

분류에서Dev

Pandas groupby ()를 사용하여 열의 쉼표로 구분 된 항목이있는 문자열을 목록으로 집계하는 방법은 무엇입니까?

분류에서Dev

구조체 노드 (연결된 목록)를 연결하는 방법은 무엇입니까?

분류에서Dev

사용자 정의 테이블 구성 요소 내에서 하위 템플릿을 사용하여 각 행을 표시하는 방법은 무엇입니까?

분류에서Dev

JSoup을 사용하여 Android의 URL에 포함 된 URL에서 원격 비디오를 직접 연결하는 방법은 무엇입니까?

분류에서Dev

BoxLayout을 사용하여 JPanel의 TOP에 구성 요소를 정렬하는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    React에서 맵을 사용하여 렌더링 된 구성 요소 목록의 특정 구성 요소를 수정하는 방법은 무엇입니까?

  2. 2

    연결된 목록 구현을 사용하여 스택에서 요소를 팝할 수없는 이유는 무엇입니까?

  3. 3

    목록을 쉼표로 구분 된 요소의 시퀀스로 변환하는 방법은 무엇입니까?

  4. 4

    연결된 목록을 사용하여 큐를 구현하는 동안 NullPointerException이 발생했습니다.

  5. 5

    c에서 연결된 목록 내부의 구조체에 대한 메모리를 할당하는 방법은 무엇입니까?

  6. 6

    QML에서 다른 QAbstractListModel의 요소에 따라 목록을 구현하는 방법은 무엇입니까?

  7. 7

    함수에서 첫 번째 요소가 제거 된 후 연결된 목록의 pHead를 업데이트하는 방법은 무엇입니까?

  8. 8

    bash를 사용하여 쉼표로 구분 된 항목을 포함하여 목록의 모든 항목을 인쇄하는 방법은 무엇입니까?

  9. 9

    apigee에서 ExtractVariables 정책을 사용하여 응답으로 반환 된 xml 항목 목록의 두 번째 요소를 읽는 방법은 무엇입니까?

  10. 10

    C #의 자체 서명 된 인증서를 사용하여 Xamarin Android 애플리케이션을 Azure에 연결하는 방법은 무엇입니까?

  11. 11

    Java의 연결된 목록에서 유일한 노드를 제거하는 방법은 무엇입니까?

  12. 12

    스타일이 지정된 구성 요소를 사용하여 포커스에 <input> 요소의 스타일을 지정하는 방법은 무엇입니까?

  13. 13

    목록에서 정의 된 값을 가진 요소를 제거하는 방법은 무엇입니까?

  14. 14

    하나의 방법을 사용하여 연결된 jquery에서 이벤트를 바인딩 해제하는 방법은 무엇입니까?

  15. 15

    javascript 또는 angular js를 사용하여 목록의 각 항목에 대해 다른 도구 설명을 표시하는 방법은 무엇입니까?

  16. 16

    파이썬에서 연결된 일부 구성 요소를 제거하는 방법은 무엇입니까?

  17. 17

    연결 목록을 사용하는 다음 큐 구현의 오류는 무엇입니까?

  18. 18

    연결된 목록에 CSV 파일의 내용을 저장하는 방법은 무엇입니까?

  19. 19

    XSD를 사용하여 목록 1 값에서 목록을 요구하는 방법은 무엇입니까?

  20. 20

    C ++에서 연결된 목록을 사용한 큐 구현

  21. 21

    Jsoup을 사용하여 '태그 이름'의 요소 목록에 대한 HTML 문서를 구문 분석하는 방법은 무엇입니까?

  22. 22

    C에서 여러 요소로 이중 연결 목록을 정렬하는 방법은 무엇입니까?

  23. 23

    WebScript를 사용하여 데이터 목록에서 연결을 얻는 방법은 무엇입니까?

  24. 24

    충돌을 피하기 위해이 해시 함수와 함께 연결된 목록 구현을 사용하는 방법은 무엇입니까?

  25. 25

    Pandas groupby ()를 사용하여 열의 쉼표로 구분 된 항목이있는 문자열을 목록으로 집계하는 방법은 무엇입니까?

  26. 26

    구조체 노드 (연결된 목록)를 연결하는 방법은 무엇입니까?

  27. 27

    사용자 정의 테이블 구성 요소 내에서 하위 템플릿을 사용하여 각 행을 표시하는 방법은 무엇입니까?

  28. 28

    JSoup을 사용하여 Android의 URL에 포함 된 URL에서 원격 비디오를 직접 연결하는 방법은 무엇입니까?

  29. 29

    BoxLayout을 사용하여 JPanel의 TOP에 구성 요소를 정렬하는 방법은 무엇입니까?

뜨겁다태그

보관