-3
            #include <iostream>
            #include<string>
            using namespace std;

            struct nodeType
            {
                int info;
                nodeType *next;
            };

            class linkedListType
            {
            private:
                nodeType *first, *last;
                int length;

            public:
                linkedListType()//constructor
                {
                    first = last = NULL;
                    length = 0;
                }

                void print() // normal print
                {
                    nodeType * current = first;
                    while (current != NULL)
                    {
                        cout << current->info <<" ";
                        // update statement
                        current = current ->next;
                    }
                }


                void insertEnd(int item) //insert item to the end of the list
                {  // forward insertion 
                    nodeType* newNode = new nodeType;
                    newNode ->info = item;

                    if (length == 0)
                    {
                        first = last = newNode;
                        newNode->next = NULL;
                    }//if

                    else
                    {
                        last->next = newNode;
                        last =  newNode;
                        newNode->next = NULL;
                    }// else

                    length++;
                }
                }
                void clearList()
        {
            nodeType * current;
            while ( first != NULL)
            {
                current = first;
                first = first->next;
                delete current;
                length--;
            }// while
    ~linkedListType() //destroctor
        {
            clearList();
        }


> `

//

Blockquote我不能写这个方法实现请任何人帮助我并解释为什么////////////////////////////// ////////////////////////////这个方法。谁能帮妈妈写信给我并解释原因//////////////////////////////// ///////////////////////////

`



                void printReverse() /*this is the function that i cant understand it or complete it. this function print elements in the list in reverse*/

                {
                    nodeYype* current=last ,*newnode =new nodType ;
                    for(int i=length;i>=0;i--)
                            //i cant complete this method

                }
            };
            void main()
            {
               linkedListType list1;

               list1.insertEnd(12); //insert item
               list1.insertEnd(25);//insert item
               list1.insertEnd(18);//insert item
               list1.insertEnd(37);//insert item
               list1.insertEnd(60);//insert item
               list1.insertEnd(100);//insert item
               list1.insertEnd(37);//insert item
               list1.insertEnd(37);//insert item
               list1.insertEnd(37);//insert item
               list1.insertEnd(60);//insert item
               list1.insertEnd(25);//insert item
               list1.insertEnd(100);//insert item
               list1.insertEnd(25);//insert item

               cout <<"Printing the linked list elements\n";
               list1.print();
               cout <<"\nPrinting the list elements in reverse order\n";
               list1.printReverse();
            }
4

4 回答 4

3
void nodeType::PrintListReverse()
{
  if (next)
     next->PrintListReverse();
  std::cout << info << std::endl;
}

递归查找列表的末尾,返回时打印。

(我只是因为我很无聊才启用你)

或者:

void linkedListType::PrintList()
{
    std::vector<int> info(length);
    nodeType* curNode = first;
    for (int i = 0; curNode != NULL; i++, curNode = curNode->next)
    {
        info[i] = curNode->info;
    }
    for (int i = length-1; i >=0; i--)
    {
        std::cout << info[i] << std::endl;
    }
}
于 2013-11-13T16:31:24.967 回答
0

如果您可以编写一个递归函数来以正确的顺序遍历列表,那么以相反的顺序打印它是一件轻而易举的事。

于 2013-11-13T16:28:41.817 回答
0

有两种可能性。要么编写递归函数,要么以相反的顺序重建列表。也就是说,在打印列表之前,您可以在现有的基础 pf 上创建一个新列表,或者重建原始列表本身。

于 2013-11-13T16:33:24.157 回答
0

您已经有一个循环将 i 从长度减少到 0。基于 i,您可以遍历列表并打印您到达的节点。微调关闭 1 个错误,以便您实际从最后一个打印到第一个,并且在列表为空时不打印。

于 2013-11-13T16:34:50.510 回答