私の頭がこれからかなり崩れた後、私は助けを求めています。たぶん私はここで本当に馬鹿なことをしています。以下はリンクリストの基本的な実装です。しかし、それは動作していないようです。誰かが見てみることができますか?このリンクされたリストの実装で何が問題になりますか?
編集:私はそれが追加機能のelse部分の無限ループに入ることを意味します。
#include <iostream>
struct node
{
int data;
node* link;
};
void add(struct node** list, int i)
{
//populate a node
node* tempNode = (node*) malloc(sizeof(node));
tempNode->data = i; //**This does not seem to initialize data**
tempNode->link = NULL; //**Same here**
//check if the list is empty
if(*list == NULL)
{
//create the node
*list = tempNode;
}
else
{
while((*list)->link != NULL); //Enters in to an endless loop here because the link is not initialized
(*list)->link = tempNode;
}
}
void print(node** list)
{
node* itr = *list;
while(itr != NULL)
{
std::cout << itr->data << "\n";
itr = itr->link;
}
}
int main()
{
node* linkedList = NULL;
node** t = &linkedList;
add(&linkedList, 10);
add(&linkedList, 20);
add(&linkedList, 30);
add(&linkedList, 40);
print(&linkedList);
}
は、あなたが「機能しない」で何を意味するかについて、より説明してください。私たちは心を読むことができません:) – hugomg
申し訳ありません私の悪い。編集に追加しました – koobi
一般的な注意点として、 'malloc'が' NULL'を返すかどうかをチェックしてセグメンテーション違反を防ぐ必要があります。 – keks