西南交通大学计算机专业考研真题答案详解7:2011年算法设计题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/haimianjie2012/article/details/83795866

一、考研真题

3、写一个算法,将单链表中值重读的结点删除,使所得的结果表中个结点值均为不相同(假设单链表中包含一个头结点)。(6分)

4、设有两个证书集合A和B,分别用递增有序链表表示,设计一个算法实现两个集合的交运算,运算结果也用递增有序链表表示。运算后,A、B两个链表保持不变。(8分)

二、真题解析

3、写一个算法,将单链表中值重读的结点删除,使所得的结果表中个结点值均为不相同(假设单链表中包含一个头结点)。(6分)

void Delete(LNode* &L)
{
	LNode *p,*q,*s;
	p = L->next;
	while (p->next&&p->next->next)
	{
		q = p;
		while (q->next)
		{
			if (p->data==q->next->data)
			{
				s = q->next;
				q->next = s->next;
				//free等价于后面两句,课本上为了便于理解写的伪代码,考试写free或者delete s;s=NULL;都可以
				//free(s);
				delete s;
				s = NULL;
			}
			else
			{
				q = q->next;
			}//if
		}//while
		p = p->next;
	}
}

4、设有两个证书集合A和B,分别用递增有序链表表示,设计一个算法实现两个集合的交运算,运算结果也用递增有序链表表示。运算后,A、B两个链表保持不变。(8分)

猜你喜欢

转载自blog.csdn.net/haimianjie2012/article/details/83795866
今日推荐