链表
1链表基础
typedef struct spy {
char *name;
struct spy *next;
}spy, *p_spy;
spy A = {"A", NULL};
spy B = {"B", NULL};
spy C = {"C", NULL};
int main( void )
{
p_spy head = NULL;
A.next = &B;
B.next = &C;
C.next = NULL;
prvSetupHardware();
head = &A;
while (head)
{
printf("%srn", head->name);
head = head->next;
}
while (1);
return 0;
}
2 插入
void insert_spy(p_spy newspy)
{
p_spy last;
if (head == NULL)
{
head = newspy;
newspy->next = NULL;
}
else
{
last = head;
while (last)
{
if (last->next == NULL)
break;
else
last = last->next;
}
last->next = newspy;
newspy->next = NULL;
}
}
int main( void )
{
insert_spy(&A);
insert_spy(&B);
insert_spy(&C);
insert_spy(&D);
prvSetupHardware();
head = &A;
while (head)
{
printf("%srn", head->name);
head = head->next;
}
while (1);
return 0;
}
3 删除
void remove_spy(p_spy oldspy)
{
p_spy left;
if (head == oldspy)
{
head = oldspy->next;
}
else
{
left = head;
while (left)
{
if (left->next == oldspy)
break;
else
left = left->next;
}
if (left)
{
left->next = oldspy->next;
}
}
}