我正在用c ++编写一个程序,它实现了一个双向链表,每个节点都有一个字符.我通过append函数插入字符:
doubly_linked_list adam; adam.append('a');
该功能实现如下:
//Append node node* append(const item c){ //If the list is not empty... if(length){ //maintain pointers to end nodes node* old_last_node = last; node* new_last_node = new node; //re-assign the double link and exit link old_last_node->next = new_last_node; new_last_node->back = old_last_node; new_last_node->next = NULL; //re-assign the last pointer last = new_last_node; } //If this is the first node else{ //assign first and last to the new node last = first = new node; //assign nulls to the pointers on new node first->next = first->back = NULL; } //increase length and exit ++length; return last; }
但是,我认为存在一个问题,可能是C++处理字符的方式.当我去打印我的列表时,不知怎的,我从来没有得到我已经附加到列表中的字符.这就是我用来打印的内容:
//Friendly output function friend std::ostream& operator << (std::ostream& out_s, const doubly_linked_list& source_list){ //create iteration node pointer node* traverse_position = source_list.first; //iterate through, reading from start for(int i = 1; i <= source_list.length; ++i){ //print the character out_s << (traverse_position->data); traverse_position = traverse_position->next; } //return the output stream return out_s; }
我打印时只是搞砸了.它打印的字符我从未附加到我的列表中 - 你知道,只是来自内存中的某些字符.什么可能导致这个?
你在哪里分配值c
的append()
功能?我担心你可能过多地集中在双重链接列表部分而不是存储数据部分.:)