#include <stdio.h>
#include <stdlib.h>
#define N 8
// 定义结构体
typedef struct node{
int data;
struct node * next;
}ElemSN;
// 创建链表
ElemSN * CreatLink(int a[])
{
ElemSN *head, *tail;
// 创建第一个结点
head = tail = (ElemSN *)malloc(sizeof(ElemSN));
tail->data = a[0];
tail->next = NULL;
// 循环创建其余结点
for(int i = 1; i < N; i ++)
{
tail = tail->next = (ElemSN *)malloc(sizeof(ElemSN));
tail->data = a[i];
tail->next = NULL;
}
return head;
}
// 输出链表
void PrintLink(ElemSN *head)
{
ElemSN *p;
for(p=head; p; p = p->next)
printf("%5d", p->data);
printf("\n");
}
// 前提: 不为空
// 有序、含重复:删除重复值
void DelNode(ElemSN *head)
{
ElemSN *p, *q, *pKey;
pKey = q = head;
p = head->next;
while(p)
{
if(p->data == pKey->data)
{
q->next = p->next;
free(p);
p = q->next;
}
else
{
pKey = p;
q = p;
p = p->next;
}
}
}
// 主函数
int main(void)
{
ElemSN *head;
int a[N] = {
2, 2, 4, 4, 5, 6, 6, 9};
// 创建链表
head = CreatLink(a);
// 输出第一次创建的链表
PrintLink(head);
// 删除重复值:有序、含重复
DelNode(head);
// 输出删除重复值后的链表
PrintLink(head);
return 0;
}
【数据结构】从有序顺序表中删除所有其值重复的元素,使表中所有元素的值均不同。
猜你喜欢
转载自blog.csdn.net/weixin_43762735/article/details/108630893
今日推荐
周排行