#include<stdlib.h>
#include<stdio.h>
typedef int Status; //Status是函数的类型,其值是函数结果状态代码,如OK等
#define OK 1
#define ERROR 0
typedef struct Node{ //定义
int a;
struct Node*next; //这里struct也应该添加.
}Node;
typedef struct Node *LinkList; //把变LinkList声明为一个指向Node类型的指针
Status InitList(LinkList *L){ //头节点创建
(*L)=(LinkList)malloc(sizeof(Node)); //L=(LinkList*)malloc(sizeof(Node));为什么不能这样写??保证级别相同?为什么用Node无法识别呢
if(!(*L)) //地址为空时 存储分配失败 //
{
return ERROR;
}
(*L)->next=NULL;
return OK;
}
Status ListInsert(LinkList*a,int i,int e)
{//在i-1,i中插入元素,就是在第I个位置插入。
LinkList p,c;
int j=1; //注意不是0!!!!
p=*a;
c=NULL; //p与p->next都为指针变量,;不能忘记//
if(j<0||j>i) ret
while(j<i) {p=p->next;j++;} urn ERROR ; //一次执行完的判断
c=(LinkList)malloc(sizeof(Node));
c->a=e;
c->next=p->next; //空指针域的继承与修改
p->next=c;
return OK;
}
Status GetElem(LinkList a,int i,int*e)
{ //读取指定位置的节点
LinkList p; //声明一节点p
int j=1 ; //j为计数器
p=a->next; //p指向首元节点。
while(j<i){p=p->next;j++;} //p指向首元节点。
if(j<1||j>i) return ERROR;
*e = p->a; //e=&p->a;写法错误当定义的是NODE *p时候??如果加括号呢
return OK;
}
Status TraverseList(LinkList a)
{//遍历链表并且输出每个节点
Node*p; //Node*p与LinkList p
p=a->next;
printf("遍历结果是\n");
while(p)
{
printf("%d ",p->a);
p=p->next;
}
printf("\n");
return OK;
}
void MergeList(LinkList*L1,LinkList*L2,LinkList*L3)
{
LinkList pa,pb,pc;
pa=NULL;
pb=NULL;
pc=NULL;
pa=(*L1)->next;
pb=(*L2)->next;
(*L3)=(*L1); //
pc=(*L3);
while(pa&&pb)
{
if((pa->a)<=(pb->a))
{
pc->next=pa;
pc=pa; //指针变量pa,pc往前走
pa=pa->next;
}
else
{
pc->next=pb;
pc=pb;
pb=pb->next;
}
}
pc->next=pa?pa:pb;
free(*L2); //释放Lb的头节点
//TraverseList(*L3); //TraverseList(pc)也无法实现
}
void main()
{
LinkList l1,l2,l3;
int b,e,j;
j=1;
InitList(&l1);
printf("请插入个数\n");
scanf("%d",&b);
printf("请输入");
for(;j<=b;j++)
{ scanf("%d",&e);
ListInsert(&l1,j,e);
}
// TraverseList(l1);
InitList(&l2);
printf("请插入个数\n");
scanf("%d",&b);
j=1;
printf("请输入\n");
for(;j<=b;j++)
{ scanf("%d",&e);
ListInsert(&l2,j,e);
}
// TraverseList(l2);
MergeList(&l1,&l2,&l3);
TraverseList(l3);
。。。。。。。。。。。。海滩超人。。。。。。。。。。。。
}
哈哈,虽然过程遇到些困难,但是写出来还是挺开心的。注释里的问题,欢迎指正,另外我问答里有顺序实现,没有错误警告但是无法得出结果的代码,欢迎大佬指正。