data-structures - 从已排序的单链表中删除重复值
问题描述
我正在尝试从已排序的单链表中删除重复值。
这是我的代码
SinglyLinkedListNode* removeDuplicates(SinglyLinkedListNode* head) {
if(head==NULL)
return head;
int flag=0;
SinglyLinkedListNode* p,*q,*temp;
for(p=head;p->next!=NULL;p=p->next)
{
if(flag==1)
{
p=temp;
flag=0;
}
q=p->next;
if(q->data==p->data)
{
temp=p;
p->next=q->next;
free(q);
flag=1;
}
}
return head;
}
但是,当单链表为 3->3->3->4->5->5->NULL 时,代码会失败
解决方案
请尝试此代码-
void removeDuplicates(SinglyLinkedListNode* head)
{
SinglyLinkedListNode* current = head;
SinglyLinkedListNode* nextNode;
if (current == NULL)
return;
while (current->next != NULL)
{
if (current->data == current->next->data)
{
nextNode = current->next->next;
free(current->next);
current->next = nextNode;
}
else
{
current = current->next;
}
}
}
推荐阅读
- php - Symfony 4项目生产问题
- sql-server - SQL Server Profiler 显示已启动但未完成的 RPC
- excel - 如何在第二列上进行 VLookup 并获取第一列值?
- java - Maven clean and install 在解决某些依赖项时返回 401
- azure - 如何使用 powershell 检索 Azure 通知中心访问策略的端点?
- networking - 数据包到达目的地后,响应数据包如何从目的地到达源?
- java - SpringApplication.exit() 返回 java.lang.InterruptedException: null
- swift - 如何强制实例设置其所有属性?
- google-sheets - 谷歌表格公式获取冒号之间的文本
- excel - 基于另一列在 Excel 中从 1 列计数或选择