given a single link list (l0, l1, l2, l3,,,ln), and transform it to (l0, ln, l1, ln-2, l2, ln-3)
来源:互联网 发布:unity3d对电脑的要求 编辑:程序博客网 时间:2024/06/14 01:52
一道微软的编程题,趁午休的时间做了一下,如果有不对之处,希望指出。
#include<string>#include<iostream>using namespace std;typedef struct LNode {char m_nValue;struct LNode* p_mNext;}LNode;LNode* createList(char* pStr) {int strLen = strlen(pStr);LNode* pHead = NULL;LNode* pNode, *pTemp;for (int i = 0; i < strLen; i++) {pNode = (LNode*)malloc(sizeof(LNode));pNode->m_nValue = pStr[i];pNode->p_mNext = NULL;if (NULL == pHead) {pHead = pNode;} else {pTemp->p_mNext = pNode;}pTemp = pNode;}return pHead;}LNode* reverseList(LNode* pHead) {if (NULL == pHead || NULL == pHead->p_mNext)return pHead; LNode* pNewHead = NULL;LNode* pNode;while (pHead) {pNode = pHead;pHead = pHead->p_mNext;pNode->p_mNext = pNewHead;pNewHead = pNode;}return pNewHead;}LNode* reorderList(LNode* pHead) {if (NULL == pHead || NULL == pHead->p_mNext || NULL == pHead->p_mNext->p_mNext)return pHead;LNode* pSlow = pHead;LNode* pFast = pHead;while (pFast->p_mNext && pFast->p_mNext->p_mNext) {pSlow = pSlow->p_mNext;pFast = pFast->p_mNext->p_mNext;}LNode* pFirst = pHead;LNode* pSecond = pSlow->p_mNext;pSlow->p_mNext = NULL;pSecond = reverseList(pSecond);LNode *pFirstNext, *pSecondNext;while (pSecond) {pFirstNext = pFirst->p_mNext;pSecondNext = pSecond->p_mNext;pFirst->p_mNext = pSecond;pSecond->p_mNext = pFirstNext;pFirst = pFirstNext;pSecond = pSecondNext;}return pHead;}void printList(LNode* pHead) {LNode* pNode = pHead;while (pNode) {cout << pNode->m_nValue << " ";pNode = pNode->p_mNext;}cout << endl;}int main(int argc, char* argv[]) {char str[] = "abcdefghi";LNode* pHead = createList(str);pHead = reorderList(pHead);printList(pHead);cin.get();return 0;}
- given a single link list (l0, l1, l2, l3,,,ln), and transform it to (l0, ln, l1, ln-2, l2, ln-3)
- 给定单链表L:L0→L1→...→Ln-1→Ln, 重新排序:L0→Ln→L1→Ln-1→L2→Ln-2→...
- 给定一个链表,比如L1--->L2---->L3---->................----->Ln,把链表调整为L1---->Ln----->L2----->Ln-1------>L3----
- 链表的交错重排L1,Ln,L2,Ln-1 ....
- L0,L1,L2范数
- L0,L1,L2
- L0/L1/L2范数
- L0,L1,L2范数
- L0 norm、L1 norm、L2 norm(L0、L1、L2范数)
- L0、L1与L2范数
- L0/L1/L2/无穷范数
- L0、L1与L2范数
- L0、L1与L2范数
- L0、L1与L2范数
- L0、L1与L2范数
- L0、L1与L2范数
- ln
- ln
- Mysql大小写敏感的问题
- 调用函数求最大公约数
- centos6.4 python 升级到2.7之后一些问题解决
- google gflag简单的使用方法
- mapreduce实现多文件自定义输出
- given a single link list (l0, l1, l2, l3,,,ln), and transform it to (l0, ln, l1, ln-2, l2, ln-3)
- 为什么需要使用及如何使用CDN(更新)
- C4.5算法
- 配置Azure命令行工具连接中国区
- 2个android程序之间的调用
- 文件(XML)解析处理工具类
- 黑马程序员-------面向对象基础(二)
- 计算机图形学 -- 变换之旋转二 [鼠标操作]
- 搜索引擎信息采集