P38.23
有一个整型链表,共有m个元素,每个元素都不大于n。保留遇到的所有绝对值相同中的元素中的第一个,其余删除。
(1)算法的基本设计思想
取三个指针。第一个一个一个往后,第二个在第一个为某个值时一个一个往后,第三个作为第二个的前驱。
第一个为某个值时,第二个将其后所有值与其比较,删除相同的值。第一个值不断往后直到最后一个。
(2)代码如下
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
typedef int ElemType;
typedef struct LNode {
ElemType data;
struct LNode *next;
}LNode, *LinkList;
void printList(LinkList &L)
{
printf("\n");
LNode *s = L->next;
while (s != NULL)
{
printf("%d ", s->data);
s = s->next;
}
}
LinkList CreatListend(LinkList &L)
{
int x;
L = (LinkList)malloc(sizeof(LNode));
LNode *s, *r = L;
scanf("%d", &x);
while (x != 9999)
{
s = (LNode *)malloc(sizeof(LNode));
s->data = x;
r->next = s;
r = s;
scanf("%d