#include <stdio.h>
#include <assert.h>
#include <stdlib.h>
typedef int ListData_t;
typedef struct ListNode{
ListData_t data;
struct ListNode* next;
}ListNode;
ListNode* make_new_node(ListData_t data)
{
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
if(node == NULL){
printf("malloc node failed");
return NULL;
}
node->data = data;
node->next = NULL;
return node;
}
void add_node_back(ListNode** list, ListData_t data)
{
ListNode* node = make_new_node(data);
if(*list == NULL){
*list = node;
} else {
ListNode* tail = *list;
while(tail->next != NULL){
tail = tail->next;
}
tail->next = node;
}
}
ListNode* list_find(ListNode* list, ListData_t data)
{
while(list != NULL){
if(list->data == data){
return list;
}
list = list->next;
}
return NULL;
}
void del_node_pos(ListNode* pos)
{
assert(pos);
if(pos->next == NULL){
printf("无数据\n");
return;
}
ListNode* del_node = pos->next;
pos->next = pos->next->next;
free(del_node);
del_node = NULL;
}
void print_list(ListNode* list)
{
assert(list);
ListNode* cur = list;
while(cur != NULL){
printf("data: %d\n", cur->data);
cur = cur->next;
}
}
int main () {
printf("Hello world!\n");
ListNode* my_list = NULL;
for(int i=0;i<5;i++){
add_node_back(&my_list, i);
}
print_list(my_list);
ListNode* find_pos = list_find(my_list, 2);
find_pos->data = 10;
printf("change --------------\n");
print_list(my_list);
del_node_pos(find_pos);
printf("del --------------\n");
print_list(my_list);
return 0;
}