给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来
2012-08-17 13:54
579 查看
//使用了三个指针,每次修改pnext指向pcurrent,然后移动三个指针 #include<iostream> using namespace std; struct Node{ int data; Node* next; }; int a[5]={1,2,3,4,5}; int main(){ Node *head; head=(Node *)malloc(sizeof(Node)); head->next=NULL; for(int i=0;i<5;i++){ Node *tmp=(Node *)malloc(sizeof(Node)); tmp->data=a[i]; tmp->next=head->next; head->next=tmp; } for(Node *tmp=head->next;tmp;tmp=tmp->next) cout<<tmp->data<<" "; cout<<endl; Node* pcurrent,*pnext,*pnnext; pcurrent=(Node *)malloc(sizeof(Node)); pnext=(Node *)malloc(sizeof(Node)); pnnext=(Node *)malloc(sizeof(Node)); pcurrent=head->next; pnext=pcurrent->next; pnnext=pnext->next; int n=0; while(pnnext!=NULL){ n++; if(n==1) pcurrent->next=NULL; pnext->next=pcurrent; pcurrent=pnext; pnext=pnnext; pnnext=pnnext->next; } if(pnext->next!=NULL) pnext->next=pcurrent; head->next=pnext; for(Node *tmp=head->next;tmp;tmp=tmp->next) cout<<tmp->data<<" "; return 0; }
相关文章推荐
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素顺序反转过来
- 编写一个函数,给定一个头指针,要求只遍历一次,将单链表中的元素反转过来
- 给定一个链表的头指针,要求只遍历一次,将单链表中的元素的顺序翻转过来
- 编写一个函数,给定一个头指针的单链表,要求只遍历一次,将链表中的元素次序反转。
- 只遍历一次,将单链表中的元素顺序反转过来
- 给定一个字符串里面只有"R" "G" "B" 三个字符,请排序,最终结果的顺序是R在前 G中 B在后。 要求:空间复杂度是O(1),且只能遍历一次字符串。
- 给定一个单向链表(长度未知),请遍历一次就找到中间的指针,假设该链表存储在只读存储器,不能被修改
- 给定一个链表,要求每隔k个元素反转
- [2014美团网笔试]给定一个单链表和一个整数k,要求每隔k个元素翻转链表
- 给你一个链表和一个 random函数, 设计一个算法能随机返回链表的某个节点, 要求每个节点被返回的概率一样。限制条件是只能遍历链表一次并且不能用额外空间。
- 假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合,现要求另辟空间构成一个顺序链表C
- 给定一个数组,该数组存贮R,G,B三种字符,将该数组按RGB顺序排序,不能使用辅助内存空间,且只能遍历数组一次。
- 逆置/反转单链表+查找单链表的倒数第k个节点,要求只能遍历一次链表
- 给定一单链表的表头指针和指向其中一个节点的指针,要求以该指针为头将原链表逆序
- 给定一个数组,要求把数组内元素的顺序随机打乱,然后输出,主要是要保证效率。
- 遍历一次实现单链表顺序反转
- 数据结构链表习题2.27,假设以两个元素依值递增有序排列的线性表A和B分别表示两个集合,现要求另辟空间构成一个顺序链表
- 遍历一次实现单链表顺序反转
- 【链表】查找链表倒数第k个结点,要求只能遍历一次
- 查找单链表的倒数第k个节点,要求只能遍历一次链表