数据结构综合应用题⑨
问题:
键盘输入n个英文字母,输入格式为n、C1、C2、…、Cn,其中n表示字母的个数。
请编程以这些输入数据建立一个单链表,并要求将字母不重复的存入链表;
输入一个单词,扫描其在链表中是否出现,如果出现,就什么
都不做;否则,根据这个单词构造结点插入链表中。
答案:
void createLinkNoSameElem(LNode* &head)
{
head=(LNode*)malloc(sizeof(LNode));//分配头结点存储空间并置空
head->next=NULL;
LNode *p;//新建p指针
int n;//英文字母个数n
char ch;//英文字母
std::cin>>n;//输入英文字母个数
for(int i=0;i<n;++i)//for循环
{
std::cin>>ch;//输入英文字母
p=head->next;//p指向首元节点(接下来的步骤判重)
while(p!=NULL)//判断p结点是否为空,非空执行,从首元节点开始依次判断
{
if(p->data==ch)//如果指针p的数据值等于ch英文字母,有重复就结束循环
break;
p=p->next;//同时指针往下走,指向下一个
}
if(p==NULL)//如果整个过程p都为空,也就是链表里没有找到相等的英文字母,则为指针p分配新的存储空间,然后将ch英文字母进行表头插入
{
p=(LNode*)malloc(sizeof(LNode));
p-data=ch;
p->next=head->next;
head->next=p;
}
}
}