zoukankan      html  css  js  c++  java
  • 练习三——单链表

    #include <iostream>
    using namespace std;
    class List;
    class LinkNode{
        friend List;
    private:
        LinkNode *link;
        int data;
    public:
        LinkNode(LinkNode *ptr=NULL){
            link=ptr;
        }
        LinkNode(const int &item,LinkNode *ptr=NULL){
            data=item;
            link=ptr;
        }
        ~LinkNode(){}
    };
    class List{
    private:
        LinkNode *first;
    public:
        List(){
            first=new LinkNode();
        }
        void MakeEmpty();
        ~List(){MakeEmpty();}
        LinkNode *getHead() const {
            return first;
        }
        void input(int EndTag);
        void output();
        LinkNode *Find(int x);
        LinkNode *Locate(int i);
        int GetData(int i,int &x);
        void SetData(int x,int i);
        int Insert(int x,int i);
        int Remove(int &x,int i);
    };
    
    void List::input(int EndTag) {
        int val;
        LinkNode *newnode;
        cin>>val;
        while(val!=EndTag){
            newnode=new LinkNode(val);
            newnode->link=first->link;
            first->link=newnode;
            cin>>val;
        }
    }
    
    void List::output(){
        LinkNode *p=first->link;
        while(p!=NULL){
            cout<<p->data<<endl;
            p=p->link;
        }
    }
    
    void List::MakeEmpty(){
        LinkNode *p;
        while(first->link!=NULL){
            p=first->link;
            first->link=p->link;
            delete p;
        }
    }
    
    LinkNode *List::Find(int x){
        LinkNode *p=first->link;
        while(p!=NULL){
            if(p->data==x){
                break;
            }
            p=p->link; 
        }
        return p;
    }
    
    LinkNode *List::Locate(int i){
        if(i<=0){
            return NULL;
        }
        LinkNode *p=first;
        int j=0;
        while(p!=NULL&&j<i){
            p=p->link;
        }
        return p;
    }
    
    int List::GetData(int i,int &x){
        LinkNode *p=Locate(i);
        if(p!=NULL){
            x=p->data;
            return 1;
        }
        else return 0;
    }
    
    void List::SetData(int x,int i){
        if(i<=0) return ;
        LinkNode *p=Locate(i);
        if(p!=NULL)
            p->data=x;
    }
    
    int List::Insert(int x,int i){
        LinkNode *p=Locate(i);
        if(p==NULL){
            return 0;
        }
        LinkNode *newNode=new LinkNode(x);
        newNode->link=p->link;
        p->link=newNode;
        return 1;
    }
    
    int List::Remove(int &x,int i){
        LinkNode *p=Locate(i-1),*q;
        if(p==NULL){
            return 0;
        }
        q=p->link;
        p->link=q->link;
        x=q->data;
        return 1;
    }
    int main(){
        List l;
        l.input(0);
        l.output();
    }
  • 相关阅读:
    推介一款小工具——SwitchHosts
    Postman的使用之进行文件上传
    Postman的使用之普通的提交Post和Get请求
    Postman的安装
    Windows配置基础环境(jdk+tomcat)
    yum clean all大坑解决
    通过代理实现访问内网系统
    批量配置免密登录
    设置JRebel热部署【本地模式】
    使用多线程程序模拟实现单生产者/多消费者问题 (Linux 线程锁实践)
  • 原文地址:https://www.cnblogs.com/wangjianupc/p/10587165.html
Copyright © 2011-2022 走看看