逆序链表输出
2013-09-07 20:42
218 查看
题目描述
将输入的一个单向链表,逆序后输出链表中的值。
输入
整数链表
输出
整数链表
样例输入
1,2,3,4,5
样例输出
5,4,3,2,1
提示
注意链表指针的处理,防止空指针,注意链表长度
代码输入部分参考:#include "func.h"
#include <stdio.h>
#include <stdlib.h>
/* 请按照要求实现下列函数 */
/* 请完成如下函数即可,输入为指向链表的指针,经过函数处理,链表首地址不变,内容倒序 */
void converse(ListNode **head)
{
}
/* main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出*/
/* 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可 */
/* 该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响*/
void TestEntry()
{
/* TODO: 请测试时改变改用例 */
ListNode *head = new ListNode;
head->value = 1;
head->next = new ListNode;
head->next->value = 2;
head->next->next = NULL;
/* TODO: 调用被测函数 */
converse(&head);
/* TODO: 执行完成后可比较是否是你认为正确的值 */
ListNode *tmp = head;
while (tmp)
{
printf("%d ",tmp->value);
ListNode *tmp2 = tmp;
tmp = tmp->next;
delete tmp2;
}
head = NULL;
}
地区
北京研究所
逆序函数:
测试入口:
将输入的一个单向链表,逆序后输出链表中的值。
输入
整数链表
输出
整数链表
样例输入
1,2,3,4,5
样例输出
5,4,3,2,1
提示
注意链表指针的处理,防止空指针,注意链表长度
代码输入部分参考:#include "func.h"
#include <stdio.h>
#include <stdlib.h>
/* 请按照要求实现下列函数 */
/* 请完成如下函数即可,输入为指向链表的指针,经过函数处理,链表首地址不变,内容倒序 */
void converse(ListNode **head)
{
}
/* main函数已经隐藏,这里保留给用户的测试入口,在这里测试你的实现函数,可以调用printf打印输出*/
/* 当前你可以使用其他方法测试,只要保证最终程序能正确执行即可 */
/* 该函数实现可以任意修改,但是不要改变函数原型。一定要保证编译运行不受影响*/
void TestEntry()
{
/* TODO: 请测试时改变改用例 */
ListNode *head = new ListNode;
head->value = 1;
head->next = new ListNode;
head->next->value = 2;
head->next->next = NULL;
/* TODO: 调用被测函数 */
converse(&head);
/* TODO: 执行完成后可比较是否是你认为正确的值 */
ListNode *tmp = head;
while (tmp)
{
printf("%d ",tmp->value);
ListNode *tmp2 = tmp;
tmp = tmp->next;
delete tmp2;
}
head = NULL;
}
地区
北京研究所
public class Node<T>{ public T data; public Node<T> next; public Node(T data,Node<T> next){ this.data=data; this.next=next; } public Node(){ this(null,null); } }
public class ListNode{ Node<Integer> head; public ListNode(){ this.head=new Node<Integer>(); } public ListNode(int[] element){ this(); Node<Integer> rear=this.head; for(int i=0;i<element.length;i++){ rear.next=new Node<Integer>(element[i],null); rear=rear.next; } } public void reverse(ListNode lNode){ Node<Integer> p=lNode.head.next,font=null,succ=null; while(p!=null){ succ=p.next; p.next=font; font=p; p=succ; } lNode.head.next=font; } public String toString(){ String str="("; Node<Integer> p=this.head.next; while(p!=null){ str+=String.valueOf(p.data); if(p.next!=null) str+=","; p=p.next; } str+=")"; return str; } }
逆序函数:
public static void converse(ListNode lNode){ System.out.println("逆序前:"+lNode); ListNode listNode=new ListNode(); listNode.reverse(lNode); System.out.println("逆序后:"+lNode); }
测试入口:
public static void TestEntry(){//测试入口,这里mian函数隐藏了 int[] input=new int[]{1,2,3,4,5}; ListNode lNode=new ListNode(input);//输入整数链表 converse(lNode);//输出整数链表 }
输出结果:
逆序前:(1,2,3,4,5) 逆序后:(5,4,3,2,1)
相关文章推荐
- 单链表的动态建立和逆序输出
- 删除链表中的重复节点、剩余节点逆序输出
- [记着玩]java模拟链表逆序输出结果
- 实现链表的逆序输出和删除某节点
- 链表逆序输出
- 正序逆序生成单链表,正序逆序输出链表(递归法和顺序栈法)
- 华为机试题:删除链表中的重复节点、剩余节点逆序输出
- [记着玩]java模拟链表逆序输出结果
- 将链表的结构逆序、将链表以逆序的形式输出
- 华为机试—逆序链表输出
- 链表逆序输出(递归妙)
- 链表的逆序输出
- 逆序输出链表的元素
- 将一个链表逆序并输出
- 剑指offer(3) 链表逆序输出
- 关于链表的逆序输出
- 逆序输出链表
- 链表的逆序输出
- 链表的逆序输出 递归算法
- 数据结构之头指针链表的逆序、输出和指定位置的删除