编辑代码

#include <iostream>
using namespace std;
typedef struct LNode{
    int data;
    struct LNode *next;
}LNode, *LinkList;

int InitList(LinkList &L){
    L = (LinkList)malloc(sizeof(LNode));
    if(L==NULL) return 0;
    L->next = NULL;
    return 1;
}
//第一题 算法思想:
void InsertAtHead(LinkList &La, int n){
    La = (LinkList)malloc(sizeof(LNode));
    La->next = NULL;
    int i, x;
    for(i=0;i<n;i++){
        scanf("%d", &x);
        LNode *p = (LNode *)malloc(sizeof(LNode));
        p->data = x;
        p = La->next;
        La->next = p; 
    }
    LNode *q = La->next;
    while(q){
        printf("%d", q->data);
        q = q->next;
    }
}

void InsertAtTail(LinkList Lb, int m){
    Lb = (LinkList)malloc(sizeof(LNode));
    Lb->next = NULL;
    LNode *p = Lb;
    int i, x;
    for(i=0; i<m;i++){
        scanf("%d" ,&x);
        LNode *q = (LNode *)malloc(sizeof(LNode));
        q->data = x;
        p->next = q;
        q->next = NULL;
        p = q;
    }
    LNode *r = Lb->next;
    while(r){
        printf("%d", r->data);
        r = r->next;
    }
}
void PrintList(LinkList L){
    LNode *p = L->next;
    while(p){
        printf("%d", p->data);
        p = p->next;
    }
}
void ReverseList_1(LinkList L){
    LNode *p = L->next;
    L->next = NULL;
    LNode *r;
    while(p!=NULL){
        r = p->next;
        p->next = L->next;
        L->next = p;
        p = r;
    }
}

void ReverseList_2(LinkList L){
    LNode *p, *pre, *r;
    p = L->next;
    pre = L;
    r = p->next;
    p->next = NULL;
    while(r!=NULL){
        pre = p;
        p=r;
        r = r->next;
        p->next=pre;
    }
    L->next = p;
}
void MergeList(LinkList La, LinkList Lb, LinkList &Lc){
    Lc = (LNode *)malloc(sizeof(LNode));
    Lc->next = NULL;
    LNode *pa = La->next;
    LNode *pb = Lb->next; 
    LNode *p = Lc;
    while(pa!=NULL && pb!=NULL){
        LNode *pc = (LNode *)malloc(sizeof(LNode));
        p->next = pc;
        pc->next = NULL;
        if(pa->data<=pb->data){
            pc->data = pa->data;
            p=pc;
            pa = pa->next;
        }
        else{
            pc->data = pb->data;
            p=pc;
            pb = pb->next;
        }
    }
    while(pa!=NULL){
        LNode *pc = (LNode *)malloc(sizeof(LNode));
        p->next = pc;
        pc->next = NULL;
        pc->data = pa->data;
        p=pc;
        pa = pa->next;
    }
    while(pb!=NULL){
        LNode *pc = (LNode *)malloc(sizeof(LNode));
        p->next = pc;
        pc->next = NULL;
        pc->data = pb->data;
        pc=pc->next;
        pb = pb->next;
    }
    LNode *r = Lc->next;
    while(r){
        int i = r->data;
        printf("%d", i);
        r = r->next;
    }    
}
void DelOdd(LinkList &L){
    LNode *pre, *p, *u;
    p=L->next;
    pre = L;
    while(p){
        if(p->data%2!=0){
            pre->next = p->next;
            u=p;
            printf("%d", u->data);
            p=p->next;

        }
        else{
            pre = p;
            p = p->next;
        }
    }
}
int main () {   
    LinkList La;
    InsertAtTail(La,3);
    LinkList Lb;
    InsertAtTail(Lb,3);


}