将链表的所有奇数元素放于偶数元素前面
来源:互联网 发布:大数据标准化 编辑:程序博客网 时间:2024/06/05 09:40
具体要求:
头文件:
#pragma once#include<stdio.h>#include<stdlib.h>#include<assert.h>typedef int DataType;typedef struct Node{ DataType data;struct Node *next;}*PNode,Node;void ParityRearrangement(PNode *pHead);//将所有奇节点放在偶数节点的前面void ReverseNode(PNode *pHead);//将所有奇数节点反转,将所有偶数节点反转
代码实现:
void ParityRearrangement(PNode *pHead)//将所有奇节点放在偶数节点的前面{int flag = 0;PNode CurNode = NULL;PNode NextNode = NULL;PNode TailNode = NULL;assert(pHead);if(NULL == *pHead || NULL == (*pHead)->next)//链表无元素或只有一个元素,直接返回return;else if(NULL == (*pHead)->next->next)//链表有两个元素,直接交换{CurNode = *pHead;NextNode = CurNode->next;NextNode->next = CurNode;NextNode->next->next = NULL;*pHead = NextNode;}else//链表有多个元素{CurNode = *pHead;while(TailNode != *pHead){flag = 0;CurNode = *pHead;while(CurNode->next != TailNode){if((CurNode->data%2 == 0) && (CurNode->next->data%2 == 1)){DataType temp = CurNode->data;CurNode->data = CurNode->next->data;CurNode->next->data = temp;flag = 1;}CurNode = CurNode->next;}TailNode = CurNode;if(flag == 0)break;}}}void ReverseNode(PNode *pHead)//将所有奇数节点反转,将所有偶数节点反转{PNode CurNode = NULL;PNode PreNode = NULL;PNode TailNode = NULL;PNode OldNumber = NULL;//奇数节点PNode EvenNumber = NULL;//偶数节点assert(pHead);CurNode = *pHead;if(NULL == *pHead || NULL == (*pHead)->next || NULL == (*pHead)->next->next)return;PreNode = BuyNode(CurNode->data);TailNode = PreNode;while(CurNode && ((CurNode->next->data%2) == 1))//反转奇数节点{CurNode = CurNode->next;OldNumber = BuyNode(CurNode->data);OldNumber->next = PreNode;PreNode = OldNumber;if(NULL == CurNode->next)break;}*pHead = PreNode;CurNode = CurNode->next;PreNode = BuyNode(CurNode->data);while(CurNode && ((CurNode->next->data%2) == 0))//反转偶数节点{CurNode = CurNode->next;EvenNumber = BuyNode(CurNode->data);EvenNumber->next = PreNode;PreNode = EvenNumber;if(NULL == CurNode->next)break;}TailNode->next = PreNode;}
测试部分:
#include"linklist.h"void test10(){PNode pNode = NULL;Init_LinkList(&pNode);PushBack(&pNode,1);PushBack(&pNode,2);PushBack(&pNode,3);PushBack(&pNode,4);PushBack(&pNode,5);PushBack(&pNode,6);ParityRearrangement(&pNode);ReverseNode(&pNode);Print_LinkList(pNode);Destroy(&pNode);}int main(){//test1();//test2();//test3();//test4();//test5();//test6();//test7();//test8();//test9();test10(); system("pause");return 0;}
1 0
- 将链表的所有奇数元素放于偶数元素前面
- 链表奇数元素放在偶数元素前面
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
- 重排数组元素,奇数放在奇数位,偶数放在偶数位
- 操作偶数、奇数、指定下标的元素
- 重排数组元素使得所有的奇数位于所有偶数之前
- 能实现把一个数组元素中的奇数放左边,偶数放右边
- 把数组里面的 奇数 放在 偶数 前面 并排序
- 将数组中所有小于或等于0的元素都放在数组前面,大于0的元素放在数组后面
- 将数组中所有小于或等于0的元素都放在数组前面,大于0的元素放在数组后面
- 将数组中的奇数放在偶数前面
- 将无序数组中的奇数放在偶数前面
- 如何将数组中奇数放在偶数前面。
- 输入一个整数数组,调整数组中数字的顺序,使得所有奇数位于偶数前面
- before用双冒号与单冒号的区别
- 图像处理中的高斯金字塔和拉普拉斯金字塔
- Unity协程是如何工作的?
- C调lua出错,返回c层打印错误信息.
- Intellij Idea社区版 上使用maven构建并使用插件jetty和tomcat运行servlet
- 将链表的所有奇数元素放于偶数元素前面
- 谈谈如何在工作中提升效率
- 字体抗锯齿属性-webkit-font-smoothing
- NYOJ_23_取石子(一)
- 缓冲字符流 用户登陆
- 阅读小结:Large-Margin Softmax Loss for Convolutional Neural Networks
- Leetcode 396. Rotate Function (Easy) (cpp)
- HDU5883(青岛网赛1006)(欧拉路)
- View中的 requestLayout(); invalidate();