微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

单链表的倒置实现代码

单链表的倒置

代码

#include <iostream>
using namespace std;

enum Error { underflow,overflow,success };

template <class Node_entry >
struct Node {
Node_entry entry;
Node<Node_entry> * next;
Node();
Node ( Node_entry item,Node<Node_entry> * add_on=0 );
};

template< class Node_entry>
Node< Node_entry >::Node() {
next = NULL;
}

template< class Node_entry>
Node<Node_entry>::Node(Node_entry item,Node<Node_entry> *add_on) {
entry = item;
next = add_on;
}
// 以上是建立了一个模板的节点类型

template<class Node_entry>
Node<Node_entry> * Inverse (Node<Node_entry> * &first ) { // first 是传入链表的头指针
Node<Node_entry> * p = first,* q;
if( first == NULL ) return first;
else { p = p->next; first->next = NULL; // 把原来的头结点的next赋值为NULL }
while( p ) { //通过循环向头指针后插入结点 。
q = p->next;
p->next = first;
first = p;
p = q; }
return first;}
void main() {
Node<int> * head = new Node<int> (1,NULL);
Node<int> * p1 = new Node<int> (2,head);
Node<int> * p2 = new Node<int> (3,p1);
Node<int> * p3 = new Node<int> (4,p2);
cout<<p3->entry<<endl; // 结果为 4, 这里 p3 为头指针
Node<int> * temp = Inverse( p3 );
cout<<p3->entry<<endl; // p3 现在也是头指针,不过由于已经倒置,所以 输出为 1
}

小经验:p->next 在左值位置 := 把一个节点链接到另一个节点尾;p->next 在右值 := 把p下一个节点的指针赋值给另一个指针

原文地址:https://www.jb51.cc/javaschema/288026.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐