list_empty/list_add
This commit is contained in:
parent
cf29ceddab
commit
69ae9eea47
1 changed files with 42 additions and 0 deletions
|
@ -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…
Add table
Add a link
Reference in a new issue