Skip to content
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;
  }
}

持之苟有恒,久久自芬芳