关于C练表问题

来源:百度知道 编辑:UC知道 时间:2024/06/22 16:57:50
// Note:Your choice is C++ IDE
#include "iostream.h"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct lnode{
int a;
struct lnode *next;
}lnode, *linklist;
void mergetlist_l(linklist &la, linklist &lb, linklist &lc){
struct lnode *pa,*pb,*pc;
pa=la->next; pb=lb->next;
lc=pc=la;
while(pa&&pb){
if(pa->a<=pb->a){
pc->next=pa;pc=pa;pa=pa->next;
}
else {pc->next=pb;pc=pb;pb=pb->next;}
}
pc->next=pa?pa:pb;
delete(lb);
}
void write_l(linklist &l, int b){
struct lnode *p=(linklist) malloc (sizeof(lnode));
p->a=b;
l->next=p;p->next=NULL;
}
void main()
{
struct lnode *la,*lb,*p,*lc;
int a1,a2,b1,b2,b3,b4;
a1=2;a2=3;b1=1;b2=5;b3=8;b4=9;
la=(linklist ) malloc (sizeof(lnode));
lb=(linklist ) malloc (sizeof(lnode

#include "iostream.h"
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
typedef struct lnode
{
int a;
struct lnode *next;
}lnode, *linklist;
void mergetlist_l(linklist &la, linklist &lb, linklist &lc)
{ //这个函数不知道你原来是什么意思,我根据你的语句猜测的:取相邻两个中小的在前面
//当然这肯定没有排序的功能了
struct lnode *pa,*pb,*pc;
pa=la; pb=lb;
//lc=pc=la;
while(pa&&pb)
{ //如果PA或者PB有一个结束了,那么另一个将的不到处理。所以才有下面 的IF语句
if(pa->a<=pb->a)
{
// pc->next=pa;pc=pa;
pc = pa;
pa=pa->next;
}
else
{
pc = pa->next;
pa->next = pb;
pb = pc;
pc = pa->next;//保存最后一个不为空的指针
pa = pa->next->next;
//pc->next=pb;pc=pb;pb=pb->next;
}
}
if(pb)
{
pc->next = pb;
}

// pc->next=pa?pa:pb;
lc = la;
//delete(lb);//这个地方你不能