c++链接两个链表的函数,并且删去表二在表一重复的节点

一步一阶梯 2019-04-24 08:22:43
我也是刚刚接触链表,对于数据结果链表内容还在学习当中,希望大佬们指出不足,我诚恳接受并认真学习! void node::merge(node *front1, node *front2)
{
if(front1 == NULL && front2 == NULL) cout<<"the node is empty"<<endl;
else if(front1 == NULL) {cout<<"the new node is:"<<endl; front2->writeLinkedList(front2);}
else if(front2 == NULL) {cout<<"the new node is:"<<endl; front1->writeLinkedList(front1);}
else if(front1 != NULL && front2 != NULL)
{
node *curr = front1;
while(curr->next != NULL)
curr = curr->next;
node *pre1 = front1,*pre3;
while(pre1->next != NULL)
{
node *pre2 = front2;
while(pre2->next != NULL)
{
pre3 = pre2;
pre2 = pre2->next;
if(pre1->value == pre2->value) {pre3->next = pre2->next;delete pre2;break;}
}
pre1 = pre1->next;
}
curr->next = front2;
cout<<"the new node is:"<<endl;
front1->writeLinkedList(front1);
}
}
...全文
114 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
一步一阶梯 2019-05-08
  • 打赏
  • 举报
回复
实际就是,链接完之后的链表,然后查重,之后删除(本人第一次发帖,漏洞太多请原谅一下)
636f6c696e 2019-04-25
  • 打赏
  • 举报
回复
新人先学会三件事情,代码排版、提问、结贴
GarfieldGCat 2019-04-25
  • 打赏
  • 举报
回复
这代码写的太乱,没选格式发,也不知道你的数据类型是什么样的,你也没问清楚你是哪里没搞明白。 既然都不知道的情况下,只能假定是单个链表里面没有重复元素,要将链表B中的所有不存在于链表A中的元素接在链表A中。

node* merge(node *p1, node *p2)
{
	if( p1 == NULL && p2 == NULL) 
	{
		cout<<"the node is empty"<<endl;
		return NULL;
	}
	else if( p1 == NULL ) return p2;
	else if( p2 == NULL ) return p1;
	//先从p2中删除p1已有的结点,然后将p2整体连接在p1后面
	node *p2Head = new node(0, p2); //因为不知道你的结构,所以自己加一个头结点,方便下面操作
	node *p2Pre = p2Head;
	node *p2Cur = p2Head->next;
	while(p2Cur != NULL)
	{
        node *p1Cur = p1;
        while( p1Cur != NULL && p2Cur->value != p1Cur->value )
            p1Cur = p1Cur->next;
		
        //如果p1Cur的结果非空,意味着上面的循环是碰到了数值一致的情况
		if( p1Cur != NULL )
		{
            //将与p1有重复的结点从p2中移除
			p2Pre->next = p2Cur->next;
			delete p2Cur;
		}
		else
			p2Pre = p2Pre->next;
			
		p2Cur = p2Pre->next;
	}
	
    //最后,将p2的结果接于p1后即可,注意移除辅助的头结点。
	node *p1Rear = p1;
	while( p1Rear->next != NULL ) p1Rear = p1Rear->next;
    p1Rear->next = p2Head->next;
    delete p2Head;
	return p1;
}

33,311

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 新手乐园
社区管理员
  • 新手乐园社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧