将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
来源:互联网 发布:淘宝属性备住怎么说 编辑:程序博客网 时间:2024/05/22 04:28
将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场笔试)
示例:
交换前链表的顺序 交换后链表的顺序
4→5→3→1→2 ==> 5→3→1→4→2
1 ==> 1 (链表仅含一个元素)
2→1 ==>1→2
==> (链表为空)
C/C++:
链表节点定义为:
struct node {
struct node *next;
int value;
};
struct node *swap(struct node *list);
注意点和要求如下:
1. swap函数要求对节点的指针/引用进行操作(不得创建任何新的链表节点)
2. 不得使用任何库函数/API,如需使用类似功能, 请自行实现
3. 不得将链表转化为其他类型数据结构再进行交换,如数组等
#include<iostream>#include<stdlib.h>using namespace std;struct node{ struct node *next; int value;};node* CreateListNode(int value)//链表中的节点建立{ if(value==NULL) return NULL; node* pNode = (node*)malloc(sizeof(node)); pNode->value = value; pNode->next = NULL; return pNode;}void ConnectNodes(node* pCurrent, node* pNext)//连接2个结点{ if(pCurrent == NULL) { cout<<"Error to connect two nodes."<<endl; exit(1); } pCurrent->next = pNext;}void PrintList(node* pHead)//打印链表.{ node* pNode = pHead; while(pNode!=NULL) { cout<<pNode->value<<" "; pNode = pNode->next; } cout<<endl;}struct node *swap(struct node *list){ if(list==NULL) return NULL; if(list->next==NULL) return list; node *p=list; node *OddHead=(node *)malloc(sizeof(node)) node *EvenHead=(node *)malloc(sizeof(node)); node *Odd=OddHead; node *Even=EvenHead; while(p) { if(p->value%2==1)//判断结点值是否为奇数 { Even->next=p; Even=p; } else { Odd->next=p; Odd=p; } p=p->next; } Odd->next=NULL;//偶数链表最后一个结点值赋空. Even->next=OddHead->next;//奇数链表的最后一个值连接带头节点的偶数链表. return EvenHead->next;//返回不带头结点的链表}int main(){ //创建结点. node *pNode1=CreateListNode(4); node *pNode2=CreateListNode(5); node *pNode3=CreateListNode(3); node *pNode4=CreateListNode(1); node *pNode5=CreateListNode(2); //结点连接成链表. ConnectNodes(pNode1,pNode2); ConnectNodes(pNode2,pNode3); ConnectNodes(pNode3,pNode4); ConnectNodes(pNode4,pNode5); node *p=swap(pNode); PrintList(p);}
0 0
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转。
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
- 调整数组顺序使奇数位于偶数前面,偶数和偶数之间的相对位置不变
- 调整数组顺序使奇数位于偶数前面,偶数和偶数之间的相对位置不变
- 调整数组顺序使得奇数位于偶数前面,且奇数与奇数,偶数与偶数之间的位置相对不变
- 奇数位于偶数前面且顺序不变
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 12.输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- java实现输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 剑指offer题目描述 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。
- 使用VMware VSphere WebService SDK进行开发 (一)——基本信息阐述
- Anti-aliasing and Continuity with Trapezoidal Shadow Maps
- timestamp 和 datetime 的比较
- html5
- 所有的shadow map的名称
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变(创新工场)
- Lowest Bit
- 史上最全的ASP.NET MVC路由配置,以后RouteConfig再弄不懂神仙都难救你啦~ - Cherbim
- 获取文本节点的值
- Solr学习_01环境搭建(Solr5.3.0)
- HTML跳转方式
- Java 进行 RSA 加解密时不得不考虑到的那些事儿
- 在input输入框中回车激活点击按钮事件代码
- c#代码实现软件开机自启动