预置条件
typedef struct link_list {
int data;
struct link_list* next;
}LINK_NODE; //定义一个链表节点,包含数据属性data,和指向该结构体的指针netx
1.删除重复节点(只保留第一个重复的节点)
LINK_NODE* del_repetition(LINK_NODE* phead)
{
/*
删除链表中的重复元素(重复元素中只保留第一个重复的元素)
方法:双指针,a指针指向最前面的节点,b指针遍历链表,找出与a指针值相同的节点,删除节点。
*/
LINK_NODE* ptmp = phead;
LINK_NODE* pstart = phead;
LINK_NODE* pfun = phead;
LINK_NODE* pre = NULL;
if (NULL == phead) //如果链表为空,则返回空
{
printf("warning:链表为空\n");
return phead;
}
while (phead != NULL)//外层循环使phead指针依次指向每一个节点
{
pfun = phead;
while (pfun != NULL && pfun->next != NULL)//内层循环使pfun指针依次指向phead之后的每一个节点
{ //如果pfun节点的值等于phead的值,则删除该节点,
if (pfun->next->data == phead->data) //并将该节点的上一个节点与该节点的下一个节点连接;
{
pre =