さて、私はこれに何時間も取り組んできましたが、私の問題を理解することはできません。二重リンクリストがあり、それに新しいノードを追加しようとすると、リンクリストのすべての値が変更されます。
今これは私が持っているものです:
void createSub(sibs *root, char *name, int size) {
if (root->subSibs == NULL) {
root->subSibs = (sibs *)malloc(sizeof(sibs));
root->subSibs->name = name;
root->subSibs->time_stamp = createTimeStamp();
root->subSibs->nextSib = NULL;
}
sibs *temp = root->subSibs;
if (temp != NULL) {
while(temp->nextSib != NULL)
temp = temp->nextSib;
}
sibs *t = (sibs *)malloc(sizeof(sibs));
t->name = name;
t->time_stamp = createTimeStamp();
t->nextSib = NULL;
if(temp != NULL)
temp->nextSib = t;
printf("root->subSibs->name = %s\n", root->subSibs->name);
(root->numSub)++;
}
何百万回も変更したことを考えると、これは完璧ではないかもしれません。誰かが私がここで間違っていることを教えてもらえますか?
root
は私が使用しているルートノードでありsubSibs
、リンクリストへのポインタです。私が行っているのは、が指すリンクリスト内の各ノードに名前とタイムスタンプを追加することroot->subSibs
です。
私が出てくるのは:
createSub(root, name1, size);
プリント:
root->subSibs1: name1;
createSub(root, name2, size);
プリント:
root->subSibs1: name2;
root->subSibs2: name2;
等...
それはおそらく本当にばかげた間違いでしょうが、どんな助けも素晴らしいでしょう。私は何時間も努力してきましたが、名前が変わる理由を誰かに教えてもらう必要があります。
また、strcpy(root->subSibsi->name, name); for i = 0-5; root->subSibs1->name
ガベージをroot->subSibs2->name
印刷してから正しい名前をroot->subSibs3->name
印刷してからガベージ(と同じsubSibs1->name
)を印刷すると...