Cで循環単一リンクリストをトラバースしようとしていますが、最後の要素を除くすべての要素が表示されています。バグはどこにありますか?表示機能の他の部分の状態が変化している間かもしれませんが、状態はどうあるべきですか?リンクリストの表示と作成の機能は次のとおりです。
struct node
{
int data;
struct node *next;
}*last;
void create(int num)
{
struct node *t,*q;
t=(struct node*)malloc(sizeof(struct node));
t->data=num;
//list is empty
if(last==NULL){
last=t;
t->next=last;
}
else
{
t->next=last->next;
last->next=t;
last=t;
}
return;
}
void display()
{
struct node *q;
q=(struct node*)malloc(sizeof(struct node));
if(last==NULL){
printf("no items in the list");
return;
}
else{
q=last->next;
while(q!=last){
printf("%d\n",q->data);
q=q->next;
}
}
//return;
}