list_empty/list_add

master
neingeist 12 years ago
parent cf29ceddab
commit 69ae9eea47

@ -1,4 +1,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>
#include "assert.h" #include "assert.h"
struct list_node { struct list_node {
@ -20,6 +22,10 @@ int list_length(list_node_t * list) {
return count; return count;
} }
bool list_empty(list_node_t *list) {
return (list == NULL);
}
void list_print(list_node_t * list) { void list_print(list_node_t * list) {
list_node_t *cur; list_node_t *cur;
@ -31,14 +37,50 @@ void list_print(list_node_t * list) {
printf("\n"); printf("\n");
} }
void list_add(list_node_t *list, list_node_t *item) {
list_node_t *cur;
cur = list;
assert(cur != NULL);
while (cur->next != NULL) {
cur = cur->next;
}
cur->next = item;
}
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
list_node_t *emptylist = NULL; list_node_t *emptylist = NULL;
assert(list_length(emptylist) == 0); assert(list_length(emptylist) == 0);
assert(list_empty(emptylist) == true);
list_print(emptylist); list_print(emptylist);
printf("list_length = %d\n", list_length(emptylist)); printf("list_length = %d\n", list_length(emptylist));
list_node_t foo = { 1, NULL }; list_node_t foo = { 1, NULL };
assert(list_length(&foo) == 1); assert(list_length(&foo) == 1);
assert(list_empty(&foo) == false);
list_print(&foo);
printf("list_length = %d\n", list_length(&foo));
// append something to foo
list_node_t bar = { 2, NULL };
list_add(&foo, &bar);
assert(list_length(&foo) == 2);
assert(list_length(&bar) == 1);
list_print(&foo);
printf("list_length = %d\n", list_length(&foo));
// append more
const int howmany = 100;
for(int i = 0; i < howmany; i++) {
list_node_t *newnode = malloc(sizeof(list_node_t));
newnode->data = i;
list_add(&foo, newnode);
}
assert(list_length(&foo) == 2 + howmany);
list_print(&foo); list_print(&foo);
printf("list_length = %d\n", list_length(&foo)); printf("list_length = %d\n", list_length(&foo));
} }

Loading…
Cancel
Save