单链表的就地逆置 (单链表带头结点)(某公司校园招聘面试试题)
2012-10-25 15:35
615 查看
面试某公司,被问此题,由于紧张,程序有误,甚为遗憾!下面给出正确的程序:
#include<iostream> using namespace std; typedef struct node { int data; struct node *next; }Node, *List; List createList() { Node *head, *p1, *p2; p1 = p2 = head = new Node; int num; cin >> num; while(-1 != num) { p1 = new Node; p1->data = num; p2->next = p1; p2 = p1; cin >> num; } p2->next = NULL; return head; } void printList(List p) { while(NULL != p->next) { cout << p->next->data << " "; p = p->next; } cout << endl; } void releaseList(List p) { if(NULL == p->next) delete p; else { releaseList(p->next); delete p; } } List reverseList(List p) { //让p1和p2都指向第一个结点 Node *p1 = p->next; Node *p2 = p1; p->next = NULL;//分离p与p1 while(NULL != p1) { p2 = p1; p1 = p1->next; //在"摘下" p2时,千万记得先进行p1 = p1->next; //倒插法重建链表 p2->next = p->next; p->next = p2; } return p; } int main() { List head = createList(); printList(head); reverseList(head); printList(head); releaseList(head); return 0; }
相关文章推荐
- PTA 带头结点的单链表就地逆置(10 分)
- 6-1 带头结点的单链表就地逆置
- 如何判断平面上两条线段(注意是线段)是否相交?(某公司校园招聘面试试题)
- 带头结点的单链表就地逆置
- 带头结点单链表的就地逆置
- 带头结点的单链表实现就地逆置的更优方法
- 为什么空类的大小不为0? (某公司校园招聘招聘面试试题)---我当时只知道其然, 但不知道所以然!
- 利用循环链表(单链)实现Josephus环(某公司校园招聘笔试试题)
- 对带头结点的单链表实现就地逆置的算法分析
- PTA(数据结构)-带头结点的单链表就地逆置
- 带头结点的单链表就地逆置(10 分)
- 带头结点的单链表就地逆置
- 就地逆置带头结点的单链表
- 字符串的大小比较(某公司校园招聘面试试题)
- 带头结点的单链表就地逆置
- C语言一个文件中的函数能直接调用另外一个文件中的静态函数吗? (某公司校园招聘面试试题)
- 带头结点的单链表就地逆置
- 各大IT公司2012校园招聘笔试面试整理
- 《数据结构》将一个带头结点的单链表分解成两个单链表
- 各大IT公司2012校园招聘笔试面试整理