lian-biao-ni-zhi.rar

  • PUDN用户
    了解作者
  • Visual C++
    开发工具
  • 1KB
    文件大小
  • rar
    文件格式
  • 0
    收藏次数
  • 1 积分
    下载积分
  • 3
    下载次数
  • 2012-11-06 16:05
    上传日期
实现链表的逆置,最佳的算法,多种情况都已考虑在内,辅助空间为O(1)。
lian-biao-ni-zhi.rar
  • 链表逆置.cpp
    1.5KB
内容介绍
#include<iostream> using namespace std; class linknode{ public: int data; linknode *link; linknode(int el,linknode* ptr=NULL){ data=el; link=ptr; } }; class linklist{ private: linknode *first; linknode *prev; public: linklist(); ~linklist(); void inserttail(int value); //表尾插入数据 void invert(); //链表倒置 void output(); }; linklist::linklist(){ first=new linknode(-1,0); prev=first; } linklist::~linklist(){ linknode *temp=first; while(temp!=NULL){ temp=first->link; delete first; first=temp;; } } void linklist::output(){ linknode *temp=first; while(temp!=NULL){ cout<<temp->data<<" "; temp=temp->link; } cout<<endl; } void linklist::inserttail(int value){ linknode *temp; if(first->data==-1){ first->data=value; } else{ temp=new linknode(value,0); prev->link=temp; prev=temp; } } void linklist::invert(){ if(first->link==NULL) ; else if(first->link->link==NULL){ linknode* temp=first; first=first->link; first->link=temp; temp->link=NULL; } else{ linknode *temp1=first,*temp2=first->link,*temp3=temp2->link; while(temp3!=NULL){ temp2->link=temp1; temp1=temp2; temp2=temp3; temp3=temp3->link; } temp2->link=temp1; first->link=NULL; first=temp2; } } void main(){ int a; int value; linklist list; cout<<"输入链表节点数据(-1 to end):"<<endl; cin>>value; while(value!=-1){ list.inserttail(value); cin>>value; } list.invert(); list.output(); cin>>a; }
评论
    相关推荐