前言
本文从有序单链表入手,主要思想是定义三个结构类型指针来解决有序单链表删除重复元素的问题。
图示
其中flag作为标杆值,p去寻找相同的值。若相同则p移动到下一个,同时定义结构指针q指向其多余的结点以释放内存;若不同则flag和p都向下移动。(PS:单链表有序且已有数据储存)
代码
node结构(举例说明)
typedef struct _Node
{
int data;//数据域
struct _Node * next;//指针域
}node;
listDelDuplicates()函数
void listDelDuplicates(node *&head)
{
//定义变量
node* flag = head; //flag作为标杆值
node* p = head->next; //P移动寻找相同值
while( p )
{
if( flag->data == p->data ) //若flag的值和p的值相同时
{
node* q = p; //定义一个q去指向p,目的是为了释放内存
flag->next = p->next; //flag的next指向p的next
p = p->next; //p指向下一个结点
delete q; //释放q所指的结点
}
else //若两者的值不同时,flag和p都向下一个移动
{
flag = p;
p = p->next;
}
}
}
来源:CSDN
作者:東木
链接:https://blog.csdn.net/dongmucat/article/details/104759965