为什么输出窗口上没有显示输出?

时间:2020-01-13 12:18:25

标签: c++ data-structures linked-list circular-list

我已经为循环链表实现了代码,但除以下内容外,输出窗口上未显示任何输出:

打印列表的时间

这是我的编译器给出的消息:

--------------构建:在Circular_Linked_List中进行调试(编译器:GNU GCC编译器)---------------

目标是最新的。 无需执行任何操作(所有项目都是最新的)。

--------------运行:在Circular_Linked_List中进行调试(编译器:GNU GCC编译器)---------------

检查是否存在:C:\ Users \ hp \ Desktop \ CPP编程\ Circular_Linked_List \ bin \ Debug \ Circular_Linked_List.exe 执行中:“ C:\ Program Files(x86)\ CodeBlocks / cb_console_runner.exe”“ C:\ Users \ hp \ Desktop \ CPP Programming \ Circular_Linked_List \ bin \ Debug \ Circular_Linked_List.exe”(在C:\ Users \ hp \桌面\ CPP编程\ Circular_Linked_List。)

这是我正在尝试在以下代码上运行并构建的以下代码:: blocks17.12

#include<iostream>
#include<bits/stdc++.h>
using namespace std;

class Node
{
public:
    int data;
    Node *next;
};
void push(Node* head,int data)
{
    Node *new_node = new Node();
    Node *temp = head;
    new_node->data = data;
    new_node->next = head;
    if(head!=NULL)
    {
        while(temp->next!=head)
        {
            temp = temp->next;
        }
        temp->next = new_node;
    }
    else{
        new_node->next = new_node;
    }
    head = new_node;
}
void printList(Node* head)
{
    Node *temp = head;
    if(head!=NULL){
        while(temp->next!=head)
    {
        cout<<temp->data<<" ";
        temp=temp->next;
    }
}
else{
    return;
}
}
int main()
{
    Node *head = NULL;

    push(head,12);
    push(head,14);
    push(head,15);
    push(head,16);

    cout<<"Time to print the List\n";

    printList(head);
    return 0;
}

1 个答案:

答案 0 :(得分:1)

您需要按以下方式更改推送功能和打印列表功能:

void push (Node * &head, int data)
{
  Node *new_node = new Node ();
  Node *temp = head;
  new_node->data = data;
  new_node->next = head;
  if (head != NULL)
    {
      while (temp->next != head)
    {
      temp = temp->next;
    }
      temp->next = new_node;
    }
  else
    new_node->next = new_node;
  head = new_node;
}

void printList (Node * head)
{
  Node *temp = head;
  if (head != NULL)
    {
      while (temp->next != head)
    {
      cout << temp->data << " " << std::endl;
      temp = temp->next;
    }
    cout << temp->data << " " << std::endl;
    }
  else
    return;
}

由于在push函数中您正在修改指针本身,并且指针按值传递,因此一旦函数返回,它将保持不变。要在函数内部更改指针,您需要通过引用传递它。 您可以找到有关通过引用herehere

传递指针的有用信息。

在printlist函数中,也不会打印temp-> next!= head为true的节点。因此,您需要单独打印。