加入收藏 | 设为首页 | 会员中心 | 我要投稿 安卓应用网 (https://www.0791zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 程序设计 > 正文

单链表的倒置实现代码

发布时间:2020-05-23 03:13:35 所属栏目:程序设计 来源:互联网
导读:单链表的倒置 代码: #include iostream using namespace std; enum Error { underflow, overflow, success }; template class Node_entry struct Node { Node_entry entry; Node

单链表的倒置

代码:

#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下一个节点的指针赋值给另一个指针

(编辑:安卓应用网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读