想问下为什么这里链表无法打印?

这是一个单链表按奇偶数分成两个链表的问题,但是L1和L2打印出来都是空的
这是前面的结构体定义,和初始化、打印链表

//单链表的储存描述
typedef  int elementType;
typedef struct slNode {
    elementType data;
    struct slNode *next;
}node, *linkList;


//初始化链表
void initialList(node **pL)
{
    (*pL) = new node;
    (*pL)->next = NULL;
}

//打印函数
void print(node** L)
{
    node* p;
    p = (*L)->next;
    while (p)
    {
        cout << p->data<<" ";
        p = p->next;
    }
    cout << endl;
}

这是分奇偶的函数,但是L1和L2无法打印,出来的是空的。

//将单链表L中的奇数项和偶数项结点分解开(元素值为奇数、偶数),分别放入新的单链表中,然后原表和新表元素同时输出到屏幕上,以便对照求解结果
void listSeparate(node** L)
{
    node* p;
    node* L1, * L2, * M, * N, * u, * t;
    p = (*L)->next;
    L1 = (node*)malloc(sizeof(node));
    L2 = (node*)malloc(sizeof(node));
    M = L1;
    N = L2;
    initialList(&L1);
    initialList(&L2);
    while (p != NULL)
    {
        if (p->data % 2 == 0)
        {
            u = (node*)malloc(sizeof(node));
            u->data = p->data;
            u->next = M->next;
            M->next = u;
            M = u;
        }
        else
        {
            t = (node*)malloc(sizeof(node));
            t->data = p->data;
            t->next = L2->next;
            L2->next = t;
            L2 = t;
        }
        p = p->next;
    }
    print(L);
    cout << "偶数项L1为:" << endl;
    print(&L1);
    cout<<"奇数项L2为:"<

数据结构对单链表进行数据排序 http://bbs.csdn.net/topics/392201633

  • 关于该问题,我找了一篇非常好的博客,你可以看看是否有帮助,链接:合并两个递增有序的单链表L1和L2并存储在链表L1中
  • 除此之外, 这篇博客: 单链表之链表的交集中的 给定两条链表要求求出两条链表中的相同元素,在这里我们我们要对两条链表中的相同元素进行输出,那么我们先假定有链表L和链表L1,则我们需要将链表L中的元素逐个取出然后和链表L1中的元素逐个进行比较。 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • public void intersection(LinkList<T> L,LinkList<T> L1)      //   求交集
    	{
    		Node<T> p = L.head.next;
    		Node<T> p1 = L1.head.next;
    		while(p!=null)
    		{
    			while(p1!=null)
    			{
    				if(p.data.equals(p1.data))
    				{
    					System.out.print(p1.data+" ");
    				}
    				p1 = p1.next;
    			}
    			p1 = L1.head.next;
    			p = p.next;
    		}
    	}