3
我想用用戶提供的數字填充鏈接列表,並將它們重新打印出來。但是,我的實現,如下所示,將只打印出第一個輸入數字。我插入名單的頭部。你能告訴什麼是錯的?獲取鏈接列表以打印出數字
struct Node
{
int data;
Node* next;
};
Node newNode(int num, Node *next_node)
{
Node node;
node.data = num;
node.next = next_node;
return node;
}
void headInsert(Node* head, int num)
{
Node* tmp;
tmp = new Node;
tmp->data = num;
tmp->next = head;
head = tmp;
}
int main(int argc, char* argv[])
{
if (argc < 2)
{
std::cout<< "No input for linked list!! \n" <<
"Usage: ./linkedlist 2 3 567 12 .. etc."
<<"\n";
return 0;
}
Node *head, *temp;
head = new Node;
head->data = atoi(argv[1]);
head->next = NULL;
headInsert(head, atoi(argv[2]));
headInsert(head, atoi(argv[3]));
temp = head;
while(temp != NULL)
{
std::cout << temp->data<< " ";
temp = temp->next;
}
return EXIT_SUCCESS;
}
由於它被標記爲'C++',你爲什麼不使用它?我不只是指'std :: list',而是爲什麼不以面向對象的方式實現你的列表/節點結構?沒有成員函數的'struct'的使用,以及用來修改它的自由函數都非常「C」。如果這是你自己的練習,至少我部分理解。我祈禱,儘管今天這不是「C++」課程的狀態。 – Chad 2012-07-23 15:43:23
[插入鏈接列表創建循環]的可能重複(http://stackoverflow.com/questions/10770543/insertion-in-linked-list-creating-loop) – 2012-07-23 15:48:22
這是學校課程的狀態,我認爲它是一件好事。當你只理解一個std :: list時,上帝幫助你調試一個問題。在使用不需要知識的免費方式之前,您應該瞭解如何使用指針創建自己的列表。話雖如此,在生產代碼中,你應該使用std :: implements。 – 2012-07-23 15:52:01