rz_紫色迷雾
春芽
共回答了15个问题采纳率:86.7% 举报
typedef struct Node//结点定义
{
int data;
Node *next;
}Node;
//链表拆分,其中head是源链表头指针,oddList是偶数链表头指针,evenList是奇数结点链表
void splitLinklist(Node *head,Node *&oddList, Node *& evenList)
{
Node * p ,*q, *r;
p = head->next;
q = oddList;
r = evenList;
while(p != NULL)
{
if(p->data % 2 == 0)//偶数结点插入oddList
{
q->next = p;
p = p->next;
q = q->next;//q总是指向链表oddList最后一个结点
q->next= NULL;
}
else
{
r->next = p;
p = p->next;
r = r->next;//r总是指向链表evenList最后一个结点
r->next = NULL;
}
}
}
整个过程遍历链表一次,假设链表长度为n,那么时间复杂度就为O(n)
1年前
10