题目描述:
设有一个由正整数组成的无序(向后)单链表,编写完成下列功能的算法:
(1)找出最小值结点,且打印该数值。
(2)若该数值是奇数,则将其与直接后继结点的数值交换。
(3)若该数值是偶数,则将其直接后继结点删除。
代码:
void swapOrDelete_(LNode *L){//函数分解思想
LNode* min=findMinNode(L);//不知道最小值data是哪个节点 => 我去拿这个节点=>函数要返回一个结点的指针
if(min==NULL){
cout<<"链表为空"<<endl;
return;
}
if(min->next==NULL){
cout<<"最小值结点为末尾结点,无后继"<<endl;
return;
}
if(min->data%2!=0){
swap(min->data,min->next->data);
}
else{
LNode *q=min->next;
min->next=q->next;
free(q);
}
}
LNode* findMinNode(LNode *L){
LNode* p=L->next;
LNode* minp=p;
while(p){
if(p->data<minp->data){
minp=p;
}
p=p->next;
}
if(minp==NULL)
return NULL;
cout<<minp->data<<endl;
return m