编辑代码

#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;
}

// 删除 pos 后的数据
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;

    //my_list = make_new_node(0);
    // assert(my_list);
	//add_node_back(&my_list, 2);
	//add_node_back(&my_list, 5);

    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;
}