有1,2,3,4,5节点; 1->2->3->4->5, 支持指点删除任何一个节点
#include <stdio.h>
#include <stdlib.h>
struct Test
{
int data;
struct Test *next;
};
struct Test *deletNode(struct Test *head, int data)
{
struct Test *p = head;
if(p->data == data){
head = head->next;
free(p);
return head;
}
while(p->next != NULL){
if(p->next->data == data){
printf("%d,data=%d\n",p->next->data,data);
p->next = p->next->next;
return head;
}
p = p->next;
}
return head;
}
int main()
{
struct Test *p = (struct Test*)malloc(sizeof(struct Test));
struct Test t2 = {2, NULL};
struct Test t3 = {3, NULL};
struct Test t4 = {4, NULL};
struct Test t5 = {5, NULL};
p->data = 1;
p->next = &t2;
t2.next = &t3;
t3.next = &t4;
t4.next = &t5;
head = p;
printLink(head);
head = deletNode(head, 1);
printLink(head);
}
该代码示例展示了如何在C语言中定义一个结构体`Test`来表示链表节点,并实现一个函数`deletNode`用于从链表中删除具有特定数据值的节点。主函数创建了一个从1到5的链表,并演示了删除节点的操作。

399

被折叠的 条评论
为什么被折叠?



