お久しぶりです。いさごです。
学校からリスト構造のプログラムを渡され、挿入を末尾に加えていく形式に変えろと言われました。
ループでリンクがNULLの所を探せばいいのかと思いましたが、繋ぎ方がよくわかりません。
どなたか教えてください・・・。お願いします。
以下は渡されてそのままのプログラムです。
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
typedef struct NodeT {
int data;
struct NodeT * next;
} Node;
typedef struct ListT {
Node * head;
Node * foot;
} List;
List * makeNewList ();
void insertAtHead (List *list, int newItem);
int main (int argc, char ** argv) {
List *list = makeNewList();
insertAtHead (list, 5);
insertAtHead (list, 4);
insertAtHead (list, 3);
insertAtHead (list, 2);
insertAtHead (list, 1);
return (0);
}
List * makeNewList () {
List * l = (List*) malloc (sizeof(List));
assert (l);
l->head = NULL;
l->foot = NULL;
return (l);
}
void insertAtHead (List *list, int newItem) {
Node * node = (Node *) malloc (sizeof(Node));
assert (node);
node->data = newItem;
assert (list);
node->next = list->head;
list->head = node;
if (list->foot == NULL) {
list->foot = node;
}
}
リストについて質問です
Re:リストについて質問です
これ純粋な?リンクリストでは無いと思います。
List構造体で先頭と、最後ののーどを管理しているからです。
なのでリンクがNULLのノードを探さなくても、最後のノードの場所が分かります。
そのことに気づけば簡単に、繋げます。
以下のソースはリストの中身を表示する部分です。
つないだ後の確認にどうぞ。
List構造体で先頭と、最後ののーどを管理しているからです。
なのでリンクがNULLのノードを探さなくても、最後のノードの場所が分かります。
そのことに気づけば簡単に、繋げます。
以下のソースはリストの中身を表示する部分です。
つないだ後の確認にどうぞ。
void showListData(List * list) { Node * now; now = list->head; while(now){ printf("%d\n",now->data); now = now->next; } }