哪位朋友帮忙做下数据结构的题目,我会非常感谢

哪位朋友帮忙做下数据结构的题目,我会非常感谢
三.假定一个线性表用带头结点的单链表表示,数据元素是整数类型,头指针为head,
(1) 试定义单链表的结构;
(2) 试写出算法(C函数):将该单链表分割为两个均带头结点的单链表:一个是由该单链表的数据元素值为偶数的结点组成的,另一个是由该单链表的数据元素值为奇数的结点组成的,希望在逻辑上仍保持原结点前后之间的相对次序不变;
(3) 分析你的算法的时间复杂度。
zgj3848 1年前 已收到1个回答 举报

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
可能相似的问题
Copyright © 2024 YULUCN.COM - 雨露学习互助 - 17 q. 0.728 s. - webmaster@yulucn.com