c
#define OVERFLOW -2
typedef struct Node {
char data;
Node *next;
} *LinkList;
LinkList CrtCLList(char *s);
void PurgeCLList(LinkList L);
LinkList CrtCLList(char *s) {
LinkList L, p, q; int i;
if (!(L=(LinkList)malloc(sizeof(Node)))) exit(OVERFLOW);
L->next=L; p=L;
for (i=0; s[i]!=0; i++) {
q=(LinkList)malloc(sizeof(Node));
q->data=s[i];
q->next=p->next;
p->next=q;
p=q;
}
return L;
}
void PurgeCLList(LinkList L) {
LinkList p,q;
p=L->next;
while (p!=L) {
q=p->next;
while (q->data==p->data) {
p->next=q->next;
free(q);
q=p->next;
}
p=p->next;
}
}