链表中一些常用操作
来源:互联网 发布:centos 邮件服务器 编辑:程序博客网 时间:2024/05/22 17:27
1、链表的结构
struct ListNode { int m_nKey; ListNode *m_pNext;};
2、链表的逆序
ListNode *ReverseList(ListNode *pHead){ ListNode *pReversedHead = NULL; ListNode *pNode = pHead; ListNode *pPrev = NULL; while (pNode != NULL) { ListNode *pNext = pNode->m_pNext; if (pNext == NULL) pReversedHead = pNode; pNode->m_pNext = pPrev; pPrev = pNode; pNode = pNext; } return pReversedHead; }
3、找出倒数第k个
ListNode* FindKthToTail(ListNode* pListHead, unsigned int k){ if (pListHead == NULL || k == 0) return NULL; ListNode *pAhead = pListHead; ListNode *pBehind = NULL; for (unsigned int i = 0; i < k - 1; i++) { if (pAhead->m_pNext != NULL) pAhead = pAhead->m_pNext; else return NULL; } pBehind = pListHead; while (pAhead-m_pNext != NULL) { pAhead = pAhead->m_pNext; pBehind = pBehind->m_pNext } return pBehind;}
4、找出中间元素
ListNode *Get_middle_node(ListNode *pNode){ ListNode *firstNode = pNode; ListNode *backNode = pNode; while (firstNode != NULL) { firstNode = first->next->next; backNode = backNode->next; } return backNode;}
5、判断链表是否有环
bool judge_list_cricle(ListNode *node){ if (node == NULL) return false; ListNode *first = node; ListNode *back = node; while(firt->next!=NULL && back->next->next!=NULL) { first = first->next; back = back->next->next; if (first == back) return ture; } return false;}
0 0
- 链表中一些常用操作
- 一些常用操作
- iphone一些常用操作
- iphone一些常用操作
- java一些常用操作
- DataGridView一些常用操作
- AJAX一些常用操作
- MongoDB一些常用操作
- opencv一些常用操作
- QT一些常用操作
- 一些常用操作
- linux一些常用操作
- js一些常用操作
- mysql 的一些常用操作
- 单链表的一些常用操作
- JAVA一些常用流操作
- 数组的一些常用操作
- oracle的一些常用操作
- CSS定位的一些解释
- 算法竞赛入门经典 暴力求解法 7.1简单枚举 除法
- Collections -- ArrayList vs LinkedList
- 关于微软.NET Native
- No handlers could be found for logger "sklearn.datasets.twenty_newsgroups"
- 链表中一些常用操作
- SVN管理android项目用svn控制版本,svn本身是不会识别哪些该传,哪些不该传,这就导致有些关于路径的东西(比如拓展jar的路径)也被上传了,而当别人下载后,那个路径对于这个人可能完全不存在,
- 拍照、从相册选图并对图片进行裁剪
- go 速学 - 16 - 项目结构
- Dump h264 raw data from LIVE555 client
- 第六周项目二:我的数组类
- 每个人都在自己的逻辑里不可自拔
- ffmpeg图片合成视频
- 优先级翻转的问题