您的位置:首页 > 职场人生

华为面试题——单向链表倒转(一次遍历)

2014-08-11 21:21 393 查看
/*

Blog:

http://blog.csdn.net/jiangxinnju

function:

将单向链表reverse,如ABCD变成DCBA,只能搜索链表一次

*/

#include <iostream>

using namespace std;

struct node

{

char data;

struct node *next;

};

typedef struct node NODE;

void test_exercise006()

{

NODE *head = new NODE; //建立附加头结点

head->next = NULL;

/*创建链表*/

NODE *current,*previous;

previous = head;

char input;

cout << "Input your list table NODE data,end with '#':";

cin >> input;

while(input != '#')

{

current = new NODE;

current->data = input;

current->next = NULL;

previous->next = current;

previous = previous->next;

cout << "Input your list table NODE data,end with '#':";

cin >> input;

}

/*输出链表*/

current = head->next;

while(current != NULL)

{

cout << current->data << " ";

current = current->next;

}

cout << endl;

/*倒转链表*/

current = head->next;

NODE *p = current->next;

NODE *q = p->next;

while(q != NULL)

{

p->next = current;

current = p;

p = q;

q = q->next;

}

p->next = current;

current = p;

head->next->next = NULL;

head->next = current;

/*输出链表*/

current = head->next;

while(current != NULL)

{

cout << current->data << " ";

current = current->next;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: