c-节点数量不确定的灵活列表



我应该制作一个链表,接收字符串并以相反的顺序打印出来。通常,我会询问需要创建的节点数量,然后在for循环中询问数据,直到完成为止。

typedef struct word_st {
string word; // string is meant to be a pointer to a struct
word_st *next;
}

但问题是,节点的数量直到运行时才知道。所以我必须不断地询问数据,直到用户完成为止。我真的不知道从哪里开始/如何做,而且似乎在互联网上也找不到任何东西。所以一个提示会很有帮助。

我有插入功能,打印功能看起来也很简单。

word_t *insert_2(word_t* head, string text) {
word_t * p = NULL;
word_t * temp = (word_t*) malloc(sizeof(word_t));
temp -> word = text;
temp -> next = NULL;
if(head == NULL) {
head = temp;
} else {
p = head;
} while(p -> next != NULL) {
p = p -> next;
}
p -> next = temp;
return head;
}  

相反,用prev替换next

typedef struct word_st {
string word; // string is meant to be a pointer to a struct
word_st * prev;
}

和函数:

word_t *insert_2(word_t* head, string text) {
word_t * nextHead = (word_t*) malloc(sizeof(word_t));
nextHead -> word = text;
nextHead -> prev = NULL;
// Check first element of LIFO 
if( head == NULL ) {
return nextHead;
}
nextHead -> prev = head;
return nextHead;
}

我希望它能编译并运行。

注:

for(word_t * head = last ; head->prev != NULL ; head = head->prev )
{
// Do the job
;
}

最新更新