链表逆序问题
2016-03-18 23:15
393 查看
传送门:http://www.nowcoder.com/courses/1/5/7 购买视频请输入优惠码
AdVHxHT 可优惠10元
题目描述:
有一个单链表,请设计一个算法,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。例如链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6->5->4->7->8->null。因为K==3,所以每三个节点之间逆序,但其中的7,8不调整,因为只有两个节点不够一组。
给定一个单链表的头指针head,同时给定K值,返回逆序后的链表的头指针。
AC 代码
class KInverse {
public:
ListNode* inverse(ListNode* head, int k) {
stack<ListNode *> s;
ListNode * newHead = NULL,*last=NULL;
while (head) {
ListNode *tmp = head->next;
head->next = NULL;
s.push(head);
head = tmp;
if(s.size()==k){
while (!s.empty()) {
if(newHead==NULL){
newHead = s.top();
last = s.top();
}else{
last->next = s.top();
last = s.top();
}
s.pop();
}
}
}
ListNode * remain=NULL;
while (!s.empty()) {
if(remain==NULL){
remain = s.top();
}else{
(s.top())->next = remain;
remain = s.top();
}
s.pop();
}
if(newHead==NULL)
return remain;
else{
last->next = remain;
return newHead;
}
}
};
AdVHxHT 可优惠10元
题目描述:
有一个单链表,请设计一个算法,使得每K个节点之间逆序,如果最后不够K个节点一组,则不调整最后几个节点。例如链表1->2->3->4->5->6->7->8->null,K=3这个例子。调整后为,3->2->1->6->5->4->7->8->null。因为K==3,所以每三个节点之间逆序,但其中的7,8不调整,因为只有两个节点不够一组。
给定一个单链表的头指针head,同时给定K值,返回逆序后的链表的头指针。
AC 代码
class KInverse {
public:
ListNode* inverse(ListNode* head, int k) {
stack<ListNode *> s;
ListNode * newHead = NULL,*last=NULL;
while (head) {
ListNode *tmp = head->next;
head->next = NULL;
s.push(head);
head = tmp;
if(s.size()==k){
while (!s.empty()) {
if(newHead==NULL){
newHead = s.top();
last = s.top();
}else{
last->next = s.top();
last = s.top();
}
s.pop();
}
}
}
ListNode * remain=NULL;
while (!s.empty()) {
if(remain==NULL){
remain = s.top();
}else{
(s.top())->next = remain;
remain = s.top();
}
s.pop();
}
if(newHead==NULL)
return remain;
else{
last->next = remain;
return newHead;
}
}
};
相关文章推荐
- 对称的二叉树
- 【Android开发准备】Windows下JDK的安装与环境变量的配置
- bzoj1023 cactus仙人掌图
- 下载APK,检测APK是否安装,检测程序是否运行
- iOS UIView
- mysql-connector-python, mysql-connector-python-rf and mysql-connector-repackaged
- android中的Binder(android内核学习记录)
- 蓝桥杯 数独 深度优先搜索
- 判断质数的方法小结
- 二叉树的下一个结点
- 【杭电】[2717]Catch That Cow
- 字符串 签名认证
- CopyOnWrite容器
- 关于数据库字段的设计
- 状态模式与android状态机
- 111. Minimum Depth of Binary Tree
- Nancy之文件上传与下载
- ltrace与strace用法
- 浏览器兼容问题
- loadrunner--27987