思路:输入一个单词,扫描其在链表中是否出现,如果出现,什么都不做;否则,根据这个单词构造结点插入链表中
void createLNodeSame(LNode *& head) //1)
{
head = (LNode *)malloc(sizeof(LNode)); //1)处只是传入了一个LNode类型的指针,并未为其分配
//内存空间,所以需要创建头结点;
head->next = NULL;
LNode *p;
int n; //n代表字母个数
char ch;
std::cin >> n; //cin>> 是std库中的一个方法
//std::类似于一个申明 这行代码作用是:从键盘端获取一个输入,并将其赋值给n
for(int i=0;i<n;++i)
{
std::cin>>ch; //通过循环依次给ch赋值
p=head->next;
while(p!=NULL) //判断链表是否为空,不为空就使p向后遍历,直到p为空停止,否则跳过此步
{
if(p->data == ch) //如果输入字母与链表已存储结点有重复,则直接跳出循环
break;
p=p->next;
}
if(p==NULL) //当不重复时,用头插法将ch插入链表中
{
p = (LNode *)malloc(sizeof(LNode));
p->data = ch;
p->next = head ->next;
head->next = p;
}
}
}
|