链表面试题之常规题1 -- 反转链表
2010-07-18 19:18
232 查看
原帖:/article/5291636.html
反转链表其实在前面的系列中已经写过程序了,现在只是将其单独提出来,列在这里。
主要就是使用额外的指针来标识新链表的头,现在正在处理的链表,以及链表的next节点。
题目:将链表按照逆序排列
可以使用非递归,也就是循环遍历的方法
利用参数,少用一个节点的空间
使用递归来实现反转链表
反转链表其实在前面的系列中已经写过程序了,现在只是将其单独提出来,列在这里。
主要就是使用额外的指针来标识新链表的头,现在正在处理的链表,以及链表的next节点。
题目:将链表按照逆序排列
可以使用非递归,也就是循环遍历的方法
1 linknode *reverse(linknode* head) 2 { 3 linknode *newlist=NULL; 4 linknode *curr=head; 5 while(curr) 6 { 7 //定义一个指向当前节点下一个节点的指针 8 linknode *next=curr->next; 9 //将当前节点的next指针进行反转 10 curr->next=newlist; 11 //将新的反转后的链表的头节点移动到当前节点 12 newlist=curr; 13 //移动到下一个节点,准备处理 14 curr=next; 15 } 16 return newlist; 17 } 18
利用参数,少用一个节点的空间
1 linknode *reverse(linknode *head) 2 { 3 linknode *newlist=NULL; 4 linknode *curr=head; 5 while(curr) 6 { 7 head=curr->next; 8 curr->next=newlist; 9 newlist=curr; 10 curr=head; 11 } 12 return newlist; 13 }
使用递归来实现反转链表
1 linknode* reverse(linknode *oldlist, linknode *newlist) 2 { 3 if(oldlist==NULL) 4 return newlist; 5 linknode *next=oldlist->next; 6 oldlist->next=newlist; 7 reverse(next,oldlist); 8 } 9
相关文章推荐
- 链表面试题之常规题1 -- 反转链表
- 将链表中的所有元素为奇数的节点移到元素为偶数节点的前面,并使奇数之间顺序反转,偶数之间顺序反转(创新工厂涂鸦移动面试题)
- 剑指Offer----面试题16:反转链表
- 剑指offer 面试题16 反转链表-Java实现
- 面试题16:反转链表
- (未完成)《剑指offer》(面试题16):反转链表
- 剑指offer面试题16——反转链表
- 【剑指Offer面试题】 九度OJ1518:反转链表
- 【面试题十六】反转链表
- offer面试题-----链表反转
- 面试题16:反转链表
- 剑指offer--面试题24:反转链表
- 面试题16 反转链表
- 面试题18:反转链表
- 剑指Offer 面试题24:反转链表 Java代码实现
- bat面试题 python 单链表反转排序
- [剑指offer]面试题16:反转链表
- 面试题16:反转链表
- OK 面试题24 反转链表
- 剑指offer-面试题16-反转链表