5·试编写算法将带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为O(1)

5·试编写算法将带头结点的单链表就地逆置,所谓“就地”是指辅助空间复杂度为O(1)

思路:将头拆下来, 剩下的利用头插法插进去

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
using namespace std;
// 链表节点结构
typedef struct Node{int data;struct Node * next;Node(): next(NULL){};Node(int data):data(data), next(NULL){};
}Node, *LinkList;void reverse(LinkList &L){Node *p = L->next;L->next = NULL;while(p){Node *q = p->next;p->next =  L->next;L->next = p;p = q;}
}// 输出有头结点的单链表
void show(LinkList L){Node *p = L->next;while(p){cout<data<<" ";p = p->next;}cout< v, LinkList &L){// 创建头 L = new Node(); // 生成链表 for(int i=0; inext = L->next;L->next = p;} 
} int main(){int a[]={1,2,3,4,5,6};vector V(a, a+6);LinkList L;createListFromHead(V, L);show(L);reverse(L);show(L);	return 0;
}

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部