设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于0的结点,而C表的结点为A表中值大于0的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。(代码

Posted Aiden (winner)

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于0的结点,而C表的结点为A表中值大于0的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。(代码相关的知识,希望对你有一定的参考价值。

分析:
B表的头结点使用原来A表的头结点,为C表新申请的一个结点。从A表的第一个结点开始,依次取其每一个结点p,判断结点p的值是否小于0,利用前插法,将小于0的结点插入B表,大于等于0的结点插入C表。

void Discompose(LinkList A)
	B=A;
	B->next=NULL; //B表初始化
	C=new LNode;  //为C申请结点空间
	C->next=NULL; //C初始化为空表
	P=A->next;    //p为工作指针
	while(p!=NULL)
		r=p->next; //暂存p的后继
		if(p->data<0)
			p->next=B->next;
			B->next=p; //将小于0的结点链入B表,前插法
		
		else
			p->next=c->next;
			c->next=p; //将大于等于0的结点链入C表,前插法
		
		p=r; //p指向新的处理结点
	

以上是关于设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于0的结点,而C表的结点为A表中值大于0的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。(代码的主要内容,如果未能解决你的问题,请参考以下文章

设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表BC,其中B表的结点为A表中值小于0的结点,而C表的结点为A表中值大于0的结点(链表A中的元素为非零整数,要求BC表利用A表的结点)。(代码

链表的相关算法及应用

线性表练习之Example032-将一个带头结点的单链表 A 分解成两个单链表 A 和 B,其中 A 表只包含原表中序号为奇数的元素,B 表中只包含原表中序号为偶数的元素

不带头结点的单链表L,设计一个递归算法逆序输出所有结点值

2.设计一个算法,将单链表中结点以逆序排列。逆序的单链表中的结点均为原表中的结点

编写不带头结点单链表的插入操作和删除操作算法