代码如下,欢迎大佬指正
#include<stdio.h>
#include<stdlib.h>
typedef struct LNode
{
int data;
struct LNode* next;
}Node,*Link;
//链表初始化
void Init(Link& link)
{
link = (Link)malloc(sizeof(Node));
link->next = NULL;
}
void Func(Link& link)
{
int t = link->next->data;//t保存当前结点的值
Node* p = link->next, * q;
while (p->next != NULL)
{
if (p->next->data == t)//如果下一个结点和前一个结点的值相同,则删除
{
q = p->next;
p->next = q->next;
free(q);
}
else//不同,则跳到下一个结点
{
t = p->next->data;
p = p->next;
}
}
}
//链表输出
void PrintLink(Link link)
{
Node* p = link;
while (p->next!=NULL)
{
printf("%d ", p->next->data);
p = p->next;
}
}
int main()
{
Link link;
Init(link);
//创建一个递增有序的单链表
Node* p = link, * s;
int x;
scanf("%d", &x);
while (x<9999)//输入到9999便停止
{
s = (Node*)malloc(sizeof(Node));
s->data = x;
p->next = s;
p = s;
scanf("%d", &x);
}
p->next = NULL;
Func(link);
PrintLink(link);
return 0;
}