⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 1.cpp

📁 题目:A、B两个以单链表做存储结构的递增有序排列的链表合并为一个单链表做存储结构的递增有序链表C
💻 CPP
字号:
#include "LinkList.h"
void main()
{
	LinkList A,B,C;
	LNode *p,*q,*r,*pa,*pb,*pre,*pc;
	ElemType m,n;
	cout<<"请输入链表A的长度:"<<endl;
	cin>>m;
	CreatList_L(A,m);
	PrintList_L(A);
	cout<<"请输入链表B的长度:"<<endl;
	cin>>n;
	CreatList_L(B,n);
	PrintList_L(B);
	CreatList_L(C,0);

 /*将A和B合并成非递增链表

	pa=A->next;pb=B->next;pre=NULL; //pa和pb分别指向A,B的当前元素
  while(pa||pb)
  {
    if(pa&&pb&&pa->data<pb->data)
    {
	   pc=pa;q=pa->next;pa->next=pre;pa=q; //将A的元素插入新表
    }
    else
    {
		pc=pb;q=pb->next;pb->next=pre;pb=q;//将B的元素插入新表
    }
		if(pb==NULL){pc=pa;q=pa->next;pa->next=pre;pa=q;}
		if(pa==NULL){pc=pb;q=pb->next;pb->next=pre;pb=q;} 
			 //将B的元素插入新表
    pre=pc;
  }
  C=A;A->next=pc; //构造新表头	

*/

	//将A和B合并成非递减链表
	p=A->next,q=B->next,r=C;
	while(p!=NULL&&q!=NULL)
	{
		if(p->data<q->data) 
		{
			r->next=p;p=p->next;
		}//if
		else
		{
			r->next=q;q=q->next;
		}//else
		r=r->next;
	}//while
	if(p==NULL) r->next=q;
	if(q==NULL) r->next=p;
	PrintList_L(C);
	//将C按递减排序
	q=C;
							for(int i=0;i<m+n-1;i++)
	//while(q->next)
	{
		p=q->next;r=q;
	  while(p->next!=NULL)
	  {
		if(p->data<p->next->data)
		{
			r->next=p->next;
			r=r->next;
			p->next=r->next;
			r->next=p;
		}//if
		else 
		{
			r=r->next;
			p=p->next;
		}//else
	  }//while
	  //q=q->next;
//	}//while
							}//for


	PrintList_L(C);
}//main

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -