当前位置:  开发笔记 > 编程语言 > 正文

c ++输出并输入单个字符

如何解决《c++输出并输入单个字符》经验,为你挑选了1个好方法。

我正在用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;
    }

我打印时只是搞砸了.它打印的字符我从未附加到我的列表中 - 你知道,只是来自内存中的某些字符.什么可能导致这个?



1> Greg Hewgill..:

你在哪里分配值cappend()功能?我担心你可能过多地集中在双重链接列表部分而不是存储数据部分.:)

推荐阅读
sx-March23
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有