Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++中链表的显示_C++_Linked List_Display - Fatal编程技术网

C++中链表的显示

C++中链表的显示,c++,linked-list,display,C++,Linked List,Display,你好。。。我想制作一个链表,从C++中的最后一个列表显示第一个列表。 as ii添加29->36->15->1 我想成为这样的1->15->36->29我做了通常的一个 void DisplayNormal() { linkedlist *temp; temp = head; while (temp->next != NULL) { cout << "list Number :

你好。。。我想制作一个链表,从C++中的最后一个列表显示第一个列表。 as ii添加29->36->15->1 我想成为这样的1->15->36->29我做了通常的一个

void DisplayNormal()
    {
        linkedlist *temp;
        temp = head;

        while (temp->next != NULL)
        {

            cout << "list Number : " << temp->ListNum << endl;
            cout << "Student Ceel Phone  : " << temp->number << endl;
            cout << "-------------------------------" << endl;
            temp = temp->next;
        }
        if (temp->next == NULL)
        {
            cout << "list Number : " << temp->ListNum << endl;
            cout << "Student Ceel Phone  : " << temp->number << endl;
            cout << "-------------------------------" << endl;
        }

    }

你的问题有点难理解。 您的意思是,如果数据在链表中是29->36->15->1,然后将其显示为1->15->36->29,或者如果数据按规则顺序给定29、36、15、1,您希望使链表1->15->36->29

我想你想要第一个。 所以我建议使用递归函数

typedef struct linkedlist linkedlist;
struct linkedlist{
    int data;
    struct linkedlist* next;
};
void displayReversed(linkedlist* current ) {

  if( current == NULL ) return;
  displayReversed(current->next);
  cout << current->data << endl;
}

我认为,最好的方法是在显示前后反转链表,因为我们改变了原始链表的方向,而不是它的副本的方向。您可以在On中反转链表,在On中显示所有元素,这就是为什么算法的最终时间复杂度为On

class Node
{
    Node *next;
    int val;
};
使用这种链表表示法,您可以通过以下方式进行操作:

Node* reverseLinkedList(Node *head)
{
    Node *prev = NULL;
    Node *current = head;
    Node *next;
    while (current) {
        next = current->next;
        current->next = prev;
        prev = current;
        current = next; 
    }
    head = prev;
}
您的完整功能是:

void DisplayReversed(Node *head)
{
    reverseLinkedList(head);

    displayNormal(*head);

    reverseLinkedList(head);
}

我建议你阅读这篇文章,然后再问你的问题。最简单的方法可能是将每个项目添加到列表的开头,而不是末尾。使用。它非常自然地向后迭代,每个节点需要额外的一个指针。这一点很好!鲍勃:谢谢