C语言链表实现实例
typedef struct student {
char* name;
struct student *next;
} student, *p_student;
p_student head = NULL;
student fyz = {"FYZ", NULL};
student dl = {"DL", NULL};
student fhx = {"FHX", NULL};
student test = {"TEST", NULL};
void insert_list(p_student new_student)
{
p_student last;
if (head == NULL)
{
head = new_student;
new_student->next = NULL;
}
else
{
last = head;
while (last)
{
if (last->next == NULL)
break;
else
last = last->next;
}
last->next = new_student;
new_student->next = NULL;
}
}
void remove_list(p_student old_student)
{
p_student left_student;
if (head == old_student)
{
head = old_student->next;
}
else
{
left_student = head;
while (left_student)
{
if (left_student->next == old_student)
break;
else
left_student = left_student->next;
}
if (left_student)
{
left_student->next = old_student->next;
}
}
}
void print_student(void)
{
p_student tmp = head;
while (tmp)
{
Debug_LOG("%s", tmp->name);
tmp = tmp->next;
}
}
int main(void)
{
insert_list(&fyz);
insert_list(&dl);
insert_list(&test);
insert_list(&fhx);
print_student();
remove_list(&test);
Debug_LOG("remove test!");
print_student();
}