我应该制作一个链表,接收字符串并以相反的顺序打印出来。通常,我会询问需要创建的节点数量,然后在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
;
}