2.33.c

来自「数据结构习题及答案」· C语言 代码 · 共 42 行

C
42
字号
◆2.33③  已知由一个线性链表表示的线性表中含有
三类字符的数据元素(如:字母字符、数字字符和其
它字符),试编写算法将该线性链表分割为三个循环
链表,其中每个循环链表表示的线性表中均只含一类
字符。

实现下列函数:
void Split(LinkList &lc, LinkList &ld, LinkList &lo, LinkList ll);

单链表类型定义如下:
typedef struct LNode{
    ElemType      data;
    struct LNode *next;
} LNode, *LinkList;
void Split(LinkList &lc, LinkList &ld, LinkList &lo, LinkList ll)
{
  LinkList s;
  s=ll->next;
  LinkList p,q,r;
  p=lc;q=ld;r=lo;
  while(s)
  {
    if(s->data<='z'&&s->data>='A')
    {
      p->next=s;p=s;
      s=s->next;p->next=lc;
    }
    else if(s->data>='0'&&s->data<='9')
    {
      q->next=s;q=s;
      s=s->next;q->next=ld;
    }
    else
    {
      r->next=s;r=s;
      s=s->next;r->next=lo;
    }
  }
 free(ll);  
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?