C++ 两个链表合并为第三个链表,并按顺序输出(求大虾指点!)
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
char data;
struct LNode *next;
}Lnode,*LinkList;
void CreateList(LinkList &L,int n) {
L = (LinkList)malloc(sizeof(LNode));
LinkList p;
L->next = NULL;
for(int i = n; i >0; --i) {
p = (LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next = L->next; L->next = p;
}
}
void sortlist(LinkList &L1,LinkList &L2,LinkList &L3)
{
LinkList p1,p2,p3;
p1 = L1->next;
p2 = L2->next;
L3 = p3 = L1;
p3->next=NULL;
while(p1 && p2)
{
if(p1->data <= p2->data){
//p3->next = p1;
p3 = p1;
p1 = p1->next;
}
else
{
//p3->next = p2;
p3 = p2;
p2 = p2->next;
}
//p3->next = p1?p1:p2;
p3->next = L1->next;
L1->next=p3;
}
while(p1)
{
p3=p1;
p1=p1->next;
p3->next=L1->next;
L1->next=p3;
}
while(p2)
{
p3=p2;
p2=p2->next;
p3->next=L1->next;
L1->next=p3;
}
//return L3;
//free(L2);
}
int main()
{
LinkList p,q,l1,l2,l3,z;
CreateList(l1,3);
p = l1->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
CreateList(l2,5);
q = l2->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("\n");
sortlist(l1,l2,l3);
z = l3->next;
while(z)
{
printf("%d ",z->data);
z=z->next;
}
return 0;
}
为什么我这个没排序?
#include <stdlib.h>
typedef struct LNode
{
char data;
struct LNode *next;
}Lnode,*LinkList;
void CreateList(LinkList &L,int n) {
L = (LinkList)malloc(sizeof(LNode));
LinkList p;
L->next = NULL;
for(int i = n; i >0; --i) {
p = (LinkList)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next = L->next; L->next = p;
}
}
void sortlist(LinkList &L1,LinkList &L2,LinkList &L3)
{
LinkList p1,p2,p3;
p1 = L1->next;
p2 = L2->next;
L3 = p3 = L1;
p3->next=NULL;
while(p1 && p2)
{
if(p1->data <= p2->data){
//p3->next = p1;
p3 = p1;
p1 = p1->next;
}
else
{
//p3->next = p2;
p3 = p2;
p2 = p2->next;
}
//p3->next = p1?p1:p2;
p3->next = L1->next;
L1->next=p3;
}
while(p1)
{
p3=p1;
p1=p1->next;
p3->next=L1->next;
L1->next=p3;
}
while(p2)
{
p3=p2;
p2=p2->next;
p3->next=L1->next;
L1->next=p3;
}
//return L3;
//free(L2);
}
int main()
{
LinkList p,q,l1,l2,l3,z;
CreateList(l1,3);
p = l1->next;
while(p)
{
printf("%d ",p->data);
p=p->next;
}
printf("\n");
CreateList(l2,5);
q = l2->next;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
printf("\n");
sortlist(l1,l2,l3);
z = l3->next;
while(z)
{
printf("%d ",z->data);
z=z->next;
}
return 0;
}
为什么我这个没排序?
...全文
相关推荐
c++ 如何合并两个有序链表
主要介绍了c++ 如何合并两个有序链表,帮助大家更好的理解和学习C++,感兴趣的朋友可以了解下
C程序员之终极标靶
优化--C程序员之终极标靶 一个用户往往把他的生命中大部分时间用来等待计算机输出结果,为了减 少这个等待时间,用户不得不采购更快的计算机,增加内存或更换整个网络 .开发者有责任尽量避免他的程序耗费昂贵的资源,为用户挽回宝贵的时间 和金钱.--原作者 --------------------------------------------------------------------
C++版本将两个有序链表合并为一个新的有序链表并返回原理及代码实现
C++版本将两个有序链表合并为一个新的有序链表并返回原理及代码实现
两个无序链表合并成一个有序链表
输入链表A 与B(空格分隔),说输入的数字序列可以无序 最后合并成一个有序的列表!MFC可视化编程
两个递增有序的单链表合并成一个递减有序的.cpp
两个递增有序的单链表合并成一个递减有序的.cpp



