顺序表的实现

来源:互联网 发布:郭沁夺冠知乎 编辑:程序博客网 时间:2024/05/29 07:59

//
//  main.cpp
//  链表
//
//  Created by ZhangYang on 13-7-9.
//  Copyright (c) 2013年 ZhangYang. All rights reserved.
//

#include <iostream>
using  namespace std;
template<class T>
class LinkList
{
    T * l;
    int size;
public:
    LinkList(T * a,int sz):l(a),size(sz){cout<<"链表已被创建!!" ;}
    LinkList():size(0){cout<<"链表已被创建!!";}
    ~LinkList(){cout<<"链表已被删除!!"<<endl;}
    bool IsEmpty()
    {
        if(size==0)
        return true;
        else
            return false;
    }
    T GetNode(int i)
    {
        T * x=l;
        int j=0;
        while(j<i)
        {
            x=x+1;
            j++;
        }
        return *x;
           
    }
    int Length()
    {
        T * x=l;
        int i=0;
        while(x!=NULL)
            i++;
        return i;
    }
    int LocateNode(T x)
    {
        int i=0;
        T * x1=l;
        while(*x1!=x)
        {
            i++;
        }
        return i;
    }
  void Insert(int i,T & x)
    {
        T * y;
        int j=0;
        while(j!=i)
            y++;
        T * y1;
        y1=y+1;
        y++;
        y=&x;
        y++;
        y=y1;
    }
    void Delete(int i)
    {
        int j=0;
        T * x=l;
        while(j!=i)
            x++;
        T * y=x+1;
        x=x+2;
        delete y;
    }
    void show()
    {
        T * y=l;
        int i=0;
        while(i<size)
        {
            cout<<*y<<"  ";
            y++;
            i++;
        }
    }
};
int main(int argc, const char * argv[])
{

    // insert code here...
    int a[10]={1,2,3,4,5,6,7,8,9,10};
    LinkList<int> str(a,10);
    str.show();
    cout<<"此链表为空是"<<str.IsEmpty()<<"(0表示假,1表示真)";
    cout<<"此链表的长度为:"<<str.Length()<<endl;
    int x=str.GetNode(3);
    cout<<"x为此链表的第"<<str.LocateNode(x)<<"个元素。"<<endl;
    str.show();
    str.Insert(3,x);
    str.show();
    str.Delete(3);
    str.show();
    return 0;
}

 

原创粉丝点击