2017-12-03 3 views
0

これは、新しい空のキューへのポインタを返すキューに対して与えられた構造体です。 queue-> rearはキューの後ろにあるノードを指し、queue-> rear-> nextはキューの前にあるノードを指していることを知っています。どのように私はキューの正面を呼び出すだろうか?キュー - >リア - >次を使うときはいつでも、ランタイムエラーが発生します。リンクリストのキューの先頭を呼び出す方法は?

intqueue_t *intqueue_construct(void) 
{ 
intqueue_t *queue = malloc(sizeof(intqueue_t)); 
assert(queue != NULL); 

queue->rear = NULL; 
queue->size = 0; 
return queue; 
} 

答えて

0

私は正しいかどうかわかりませんが、このようなものを探すと思います。 謝辞は、すべてのコード、特に構造体定義を提供します。

typedef struct node_t 
{ 
    int data; 
    struct node_t* next; 
} node; 

void intqueue_addelement(node* n, int d) //add new element to linked list 
{ 
    if(n->next == NULL) 
    { 
     n->next = malloc(sizeof(node)); 
     assert(n->next != NULL); 
     n->next->next = NULL; 
     n->next->data = d; 
    } 
    else 
    { 
     intqueue_addelement(n->next, d); 
    } 
} 

node* intqueue_lastelement(node* n) 
{ 
    if(n->next == NULL) 
    { 
     return n; 
    } 
    else 
    { 
     return intqueue_lastelement(n->next); 
    } 
} 

そしてメインでそれは次のようになります。あなたは今、リンクされたリストを持っている

node *q = malloc(sizeof(node)); 
q->next = NULL; 
q->data = 0; 

を。 qは先頭を指し、intqueue_lastelementは最後の要素のポインタを与え、intqueue_addelementは要素を追加します。

関連する問題