リストについて質問です
Posted: 2007年5月13日(日) 00:39
お久しぶりです。いさごです。
学校からリスト構造のプログラムを渡され、挿入を末尾に加えていく形式に変えろと言われました。
ループでリンクが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;
}
}
学校からリスト構造のプログラムを渡され、挿入を末尾に加えていく形式に変えろと言われました。
ループでリンクが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;
}
}