#include <stdio.h>
#include <stdlib.h>
struct node {
int value;
struct node* next;
} ;
typedef struct node node_t;
node_t* create_linked_list( unsigned int number_of_nodes) {
node_t* head = NULL;
for ( unsigned int i = 1 ; i < number_of_nodes + 1 ; ++ i) {
/*
* malloc might be necessary so that the node doesn't
* get wiped from memory once the for loop is over?
* TODO: Find out if that is why it's necessary.
*/
node_t
* node
= malloc ( sizeof ( node_t
) ) ; node-> value = i;
node-> next = head;
head = node;
}
return head;
}
void print_list( node_t* head) {
node_t* temp = head;
while ( temp != NULL) {
temp = temp-> next;
}
}
void clean_list( node_t* head) {
node_t* current = head;
while ( current != NULL) {
node_t* temp = current;
current = current-> next;
}
printf ( "\n clean_list complete \n " ) ; }
int main( void ) {
node_t* head = create_linked_list( 15 ) ;
printf ( "head address at beginning = %p\n " , head
) ; printf ( "head value at the beginning = %d\n \n " , ( * head
) .
value ) ;
print_list( head) ;
clean_list( head) ;
printf ( "\n head address at the end = %p" , head
) ; printf ( "\n head value at the end = %d" , ( * head
) .
value ) ;
return 0 ;
}
I2luY2x1ZGUgPHN0ZGlvLmg+CiNpbmNsdWRlIDxzdGRsaWIuaD4KCnN0cnVjdCBub2RlIHsKCWludCB2YWx1ZTsKCXN0cnVjdCBub2RlKiBuZXh0Owp9Owp0eXBlZGVmIHN0cnVjdCBub2RlIG5vZGVfdDsKCm5vZGVfdCogY3JlYXRlX2xpbmtlZF9saXN0KHVuc2lnbmVkIGludCBudW1iZXJfb2Zfbm9kZXMpIHsKCW5vZGVfdCogaGVhZCA9IE5VTEw7CgkKCWZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgbnVtYmVyX29mX25vZGVzICsgMTsgKytpKSB7CgkJLyoKCQkgKiBtYWxsb2MgbWlnaHQgYmUgbmVjZXNzYXJ5IHNvIHRoYXQgdGhlIG5vZGUgZG9lc24ndAoJCSAqIGdldCB3aXBlZCBmcm9tIG1lbW9yeSBvbmNlIHRoZSBmb3IgbG9vcCBpcyBvdmVyPwoJCSAqIFRPRE86IEZpbmQgb3V0IGlmIHRoYXQgaXMgd2h5IGl0J3MgbmVjZXNzYXJ5LgoJCSovCgkJbm9kZV90KiBub2RlID0gbWFsbG9jKHNpemVvZihub2RlX3QpKTsKCQlub2RlLT52YWx1ZSA9IGk7CgkJbm9kZS0+bmV4dCA9IGhlYWQ7CgkJaGVhZCA9IG5vZGU7Cgl9CgoJcmV0dXJuIGhlYWQ7Cn0KCnZvaWQgcHJpbnRfbGlzdChub2RlX3QqIGhlYWQpIHsKCW5vZGVfdCogdGVtcCA9IGhlYWQ7CgkKCXdoaWxlICh0ZW1wICE9IE5VTEwpIHsKCQlwcmludGYoIiVkIC0gIiwgdGVtcC0+dmFsdWUpOwoJCXRlbXAgPSB0ZW1wLT5uZXh0OwoJfQoKCXByaW50ZigiXG4iKTsKfQoKdm9pZCBjbGVhbl9saXN0KG5vZGVfdCogaGVhZCkgewoJbm9kZV90KiBjdXJyZW50ID0gaGVhZDsKCQoJd2hpbGUgKGN1cnJlbnQgIT0gTlVMTCkgewoJCW5vZGVfdCogdGVtcCA9IGN1cnJlbnQ7CgkJY3VycmVudCA9IGN1cnJlbnQtPm5leHQ7CgkJZnJlZSh0ZW1wKTsKCX0KCQoJcHJpbnRmKCJcbmNsZWFuX2xpc3QgY29tcGxldGUgXG4iKTsKfQoKaW50IG1haW4odm9pZCkgewoJbm9kZV90KiBoZWFkID0gY3JlYXRlX2xpbmtlZF9saXN0KDE1KTsKCQoJcHJpbnRmKCJoZWFkIGFkZHJlc3MgYXQgYmVnaW5uaW5nID0gJXBcbiIsIGhlYWQpOwoJcHJpbnRmKCJoZWFkIHZhbHVlIGF0IHRoZSBiZWdpbm5pbmcgPSAlZFxuXG4iLCAoKmhlYWQpLnZhbHVlKTsKCQoJcHJpbnRfbGlzdChoZWFkKTsKCQoJY2xlYW5fbGlzdChoZWFkKTsKCQoJcHJpbnRmKCJcbmhlYWQgYWRkcmVzcyBhdCB0aGUgZW5kID0gJXAiLCBoZWFkKTsKCXByaW50ZigiXG5oZWFkIHZhbHVlIGF0IHRoZSBlbmQgPSAlZCIsICgqaGVhZCkudmFsdWUpOwoJCglyZXR1cm4gMDsKfQo=