2015创新工场涂鸦移动测试题-软件工程师
来源:互联网 发布:背叛了男朋友 知乎 编辑:程序博客网 时间:2024/05/18 13:09
.将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并保证奇数之间顺序不变,偶数之间顺序不变。
示例:
交换前链表的顺序 交换后链表的顺序
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);
Java:
链表节点定义为:
classNode {
publicNode next;
public int value
}
Nodeswap(Node list)
注意点和要求如下:
1. swap函数要求对节点的指针/引用进行操作(不得创建任何新的链表节点)
2. 不得使用任何库函数/API,如需使用类似功能, 请自行实现
3.不得将链表转化为其他类型数据结构再进行交换,如数组等
#include <iostream>#define Max 5 using namespace std;struct node {struct node *next;int value;};void CreatelistF(node *&L, int a[], int n){L = (node *)malloc(sizeof(node));L->value = n;L->next = NULL;for (int i = 0; i < n; i++){node *s = (node *)malloc(sizeof(node));s->value = a[i];s->next = L->next;L->next = s;}}void Print(node *&L){node *temp;temp = L->next;while (temp != NULL){printf("%d->", temp->value);temp = temp->next;}cout << endl;}void Reverse(node *&L){node *p = L->next, *q;L->next = NULL;while (p != NULL){q = p->next;p->next = L->next;L->next = p;p = q;}}struct node *swap(struct node *list){if (list == NULL)return NULL;if (list->next == NULL)return list;node *p = list->next;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;}int main(){int a[Max] = {4,5,3,1,2};node * L = (node *)malloc(sizeof(node));CreatelistF(L, a, Max);Reverse(L);cout << "the old list" << endl;Print(L);L = swap(L);cout << "the new list" << endl;Print(L);system("pause");return 0;}
0 0
- 创新工场涂鸦移动测试题-软件工程师
- 2015创新工场涂鸦移动测试题-软件工程师
- 【算法】创新工场涂鸦移动2017校园招聘测试题-A卷-软件工程师
- 创新工场涂鸦移动2018校园招聘测试题
- 笔试 - 2014创新工场涂鸦移动校园招聘测试题 及 答案
- 创新工场-涂鸦移动 面经
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场笔试题
- 创新工场看好移动互联网 - 李开复
- 创新工程-涂鸦移动面试总结
- 创新工场笔试题整理
- 创新工场笔试题整理
- 创新工场一道笔试题
- 创新工场一道编程题
- 创新工场笔试题整理
- 创新工场涂鸦移动测试题-软件工程师
- Android程序设计基础
- (java)Compare Version Numbers
- iOS 创建单例的两种方法
- Linux下管理员权限获取(su和sudo的区别)
- 2015创新工场涂鸦移动测试题-软件工程师
- java基础知识——网络编程、IO流
- PHP原生--截取中文字符串,并生成省略...
- 决策树--从原理到实现
- BZOJ-1822 Frozen Nova 冷冻波 计(jie)算(xi)几何+二分+最大流判定+经典建图
- decode.c:38:18: fatal error: dnet.h: No such file or directory
- Javascript实现完美的运动动画框架
- js基本内容
- C#类的构造和析构