02-线性结构1 两个有序链表序列的合并 (15 分)

  1. typedef struct Node *PtrToNode;
    struct Node * 是oldname,PtrToNode是newname
    struct Node *定义的变量指的是 指向.struct Node的变量【指针变量】
  2. 该节点
 struct Node {
            ElementType Data; /* 存储结点数据 */
            PtrToNode   Next; /* 指向下一个结点的指针 */
        };

代码如下:

List Merge( List L1, List L2 ){
    List pa,pb,pc,L;
    L = (List)malloc(sizeof(struct Node)); //malloc返回void* 类型指针,它可以通过类型转换强制转换为任何其它类型的指针
    //如果在C++中,可以直接用new来分配内存,可以自动识别内存大小,并分配同类型的指针
    pa = L1->Next;
    pb = L2->Next;
    pc = L;
    while(pa && pb){
        if(pa->Data <= pb->Data){
                pc->Next = pa;
                pc = pc->Next;
                pa = pa->Next;
        }else{
                pc->Next = pb;
                pc = pc->Next;  //移动pc向后
                pb = pb->Next; //移动pc向后
        }
    }
    if(pa)
        pc->Next = pa;
    else
        pc->Next = pb;
    L1->Next = NULL;
    L2->Next = NULL; //空链表
    return L;
}

你可能感兴趣的:(02-线性结构1 两个有序链表序列的合并 (15 分))