• 单链表---C++描述 - [C++]

    2008-05-31

    Tag:单链表

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://powers7.blogbus.com/logs/21994515.html


    #include <iostream>
    using namespace std;
    #define  ElemType int
    #define flag -1


    typedef struct Node
    {
        ElemType data;
        struct Node *next;
    }LNode, *LinkedList;


    LinkedList LinkedListInit();
    int LinkedListLength(LinkedList &L);
    LinkedList LinkedListGet(LinkedList L,LinkedList p,int i);
    LinkedList LinkedListLocate(LinkedList L,ElemType x);
    void LinkedListInsert(LinkedList &L,LinkedList p,ElemType x);
    void LinkedListDel(LinkedList &L,int i);
    LinkedList LinkedListCreat();
    LinkedList LinkedListShow(LinkedList L);

    LinkedList L=NULL,p=NULL,w;
    ElemType x=0;


    int main()
    {
        int i;
        cout <<"链表的初始化" <<endl;
        LinkedListInit();
        cout <<endl;



        cout <<"链表的创建"<<" ";
        LinkedListCreat();
        cout <<endl;

       

        LinkedListShow(L);
        cout<<endl;
        cout<<endl;



        cout <<"链表的长度" <<":";
        cout <<LinkedListLength(L) <<endl<<endl;



        cout <<"取链表的元素" <<":";
        cout <<endl<<"取出的元素为:"<<(LinkedListGet(L,p,i))->data<<endl<<endl;




        cout <<"链表的插入" <<":";
        LinkedListInsert(L,p,x);
        cout <<endl<<endl;


        LinkedListShow(L);
        cout <<endl<<endl;



        cout <<"链表的删除" <<":";
        LinkedListDel(L,i);
        cout <<endl;


        LinkedListShow(L);
        cout <<endl<<endl;
        system("pause");

        return 0;
    }

    /***************建立一个空链表*********************/
    LinkedList LinkedListInit()
    {
        L=(LNode *)malloc(sizeof(LNode));
        if(L==NULL)
        {
            cout <<"没有足够的内存空间" <<endl;
        }
        L->next=NULL;
        return L;
    }
    /************** 求表长****************************/
    int LinkedListLength(LinkedList &L)
    {
        p=L->next;
        int j=0;
        while(p)
        {
            j++;
            p=p->next;
        }
        return j;
    }
    /*************按序号查找************************/
    LinkedList LinkedListGet(LinkedList L,LinkedList p,int i)
    {
        cin>>i;
        p=L->next;
        int j=1;
        while(p!=NULL&&j <i)
        {
            p=p->next;
            j++;
        }
        if(j=i)
        {
            return p;
        }
        else
        {
            return NULL;
        }
    }
    /**********************按值查找*********************/
    LinkedList LinkedListLocate(LinkedList L,ElemType x)
    {
        p=L->next;
        int j=1;
        while(p!=NULL&&p->data!=x)
        {
            p=p->next;

            j++;
        }
        if(p->data==x)
        {
            return p;
        }
        else
        {
            return NULL;
        }
    }
    /********************插入***************************/
    void LinkedListInsert(LinkedList &L,LinkedList p,ElemType x)
    {    
        LNode *pre,*s;
        pre=L;
        cout<<"input your number"<<":";
        cin>>x;
        while(pre!=NULL&&pre->next!=p)
        pre=pre->next;
        if(!pre)
        {
          cout <<"不存在p这样的结点" <<endl;
        }
       else
       {
          s=(LNode *)malloc(sizeof(LNode));
          s->data=x;
          s->next=pre->next;
          pre->next=s;
       }

    }
    /********************删除***********************/
    void LinkedListDel(LinkedList &L,int i)
    {
         cout<<"input your number_id"<<":";
         cin>>i;
         LinkedList q;
         int j=1;
         p=L;
         while(p->next&&j <i)
         {
             p=p->next;
             j++;
         }
         if(p->next==NULL)
         {
             cout <<"删除的位置不正确" <<endl;
         }
         q=p->next;
         p->next=q->next;
         free(q);
    }
    /*****************建立单链表**********************/
    LinkedList LinkedListCreat()
    {
        LinkedList r;
        L=(LNode *)malloc(sizeof(LNode));
        L->next=NULL;
        r=L;
        cout <<"输入元素" <<":"<<" ";
        cin>>x;
        while(x!=flag)
        {
            p=(LNode *)malloc(sizeof(LNode));
            p->data=x;
            r->next=p;
            r=p;
            cin>>x;
        }
        r->next=NULL;
        return L;
    }
    /*****输出链表中的值***********/
    LinkedList LinkedListShow(LinkedList L)
    {
               
        p=L->next;
        while(p!=NULL)
        {
            cout <<p->data<<" ";
            p=p->next;    
        }
            return L;
    }


    收藏到:Del.icio.us




    评论

  • 涛哥你在搞什么?!
    Powers7回复小也。说:
    这是我们专业学的东西!!!
    2008-06-21 12:35:29