数据结构习题及答案
源代码在线查看: 2.33.c
◆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->datadata>='A')
{
p->next=s;p=s;
s=s->next;p->next=lc;
}
else if(s->data>='0'&&s->data {
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);
}