重新认识线性表的链式存储(单链表)

#include <iostream>
     using namespace std;
    #define Status int 
    #define ElemType int
    typedef  struct LNode
    {
        ElemType  data;
        struct LNode   *next;   
    }LNode,*LinkList;


        Status CreateList_L(LinkList &L,int n)//头插法逆序输出
                {
                    LinkList p;
                L=(LinkList)malloc(sizeof(LNode));
                L->next=NULL;
                for(int i=1;i<=n;i++)//for(int i=n;i>0;--i)
                {
                p=(LinkList)malloc(sizeof(LNode));
                //scanf(&p->data);
                cin>>p->data;

                p->next=L->next;//头插法
                L->next=p;

                }
                return 1;
                }   
    



        Status BehindCreateList_L(LinkList &L,int n)//尾插法可得正序输出
        {
        LinkList p;
    
        L=(LinkList)malloc(sizeof(LNode));
        L->next=NULL;
        LinkList q=L;
        for(int i=1;i<=n;i++)//for(int i=n;i>0;--i)
        {
        p=(LinkList)malloc(sizeof(LNode));
        //scanf(&p->data);
        cin>>p->data;
        p->next=q->next;
        q->next=p;
        q=q->next;
        ///p->next=L->next;//头插法
        //L->next=p;

        }
        return 1;
        }   

                Status ShowList_L(LinkList &L)
        {
            LinkList  p=L->next;
            while(p)
            {
                cout<<p->data<<endl;
                p=p->next;
            }
    
    
            return 1;
    
        }


        int main ()
        {
    
            LinkList a;
            //CreateList_L(a,4);
            BehindCreateList_L(a,4);
            ShowList_L(a);
            system("pause");
    
    
    
        }

1LinkList 指向结构体的指针
2LinkList &L 引用链表的首地址,操作能作用于原链表
3头插法逆序输出,尾插法顺序输出

猜你喜欢

转载自www.cnblogs.com/lianggaoblogyuan/p/9786168.html
今日推荐