链表的创建

链表的创建,带头指针的头插法,尾插法,不带头指针的头插法,尾插法

#include <iostream>

#include<stdio.h>
#include<malloc.h>

using namespace std;

typedef struct node
{
    int num;
    struct node * next;
} Node,*pNode;

//带头指针尾插法创建链表
pNode createList1()
{
    pNode pHead=(pNode)malloc(sizeof(Node));
    pNode pTail=pHead;
    pTail->next=NULL;
    for(int i=0;i<10;i++)
    {
        pNode pnew=(pNode)malloc(sizeof(Node));
        pnew->num=i;
        pnew->next=NULL;
        pTail->next=pnew;
        pTail=pnew;
    }
    return pHead;
}

//带头指针头插法实现链表的插入
pNode createList2()
{
    //创建一个头指针
    pNode pHead=(pNode)malloc(sizeof(Node));
    pNode phead=pHead;

    phead->next=NULL;

    for(int i=0;i<10;i++)
    {
        if(phead==pHead)
            phead=NULL;
        pNode pnew=(pNode)malloc(sizeof(Node));
        pnew->num=i;
        pnew->next=phead;
        phead=pnew;
    }
    pHead->next=phead;
    return pHead;
}

//不带头指针尾插法创建链表
pNode createList3()
{
    pNode pHead;
    pNode pTail=NULL;

    for(int i=0;i<10;i++)
    {
        if(pTail==NULL)
        {
            pTail=(pNode)malloc(sizeof(Node));
            pTail->num=i;
            pTail->next=NULL;
            pHead=pTail;
        }
        else
        {
            pNode pnew=(pNode)malloc(sizeof(Node));
            pnew->num=i;
            pnew->next=NULL;
            pTail->next=pnew;
            pTail=pnew;
        }
    }
    return pHead;
}

//不带头指针头插法实现链表的插入
pNode createList4()
{
    //创建一个头指针
    pNode phead=NULL;
    for(int i=0;i<10;i++)
    {
        if(phead==NULL)
        {
            phead=(pNode)malloc(sizeof(Node));
            phead->num=i;
            phead->next=NULL;
        }
        else
        {
            pNode pnew=(pNode)malloc(sizeof(Node));
            pnew->num=i;
            pnew->next=phead;
            phead=pnew;
        }

    }
    return phead;
}

//链表的遍历
void traver( pNode pHead)
{
    if(pHead==NULL) return;
    pNode ptrave=pHead;
    while(ptrave->next!=NULL)
    {
        printf("%d->",ptrave->num);
        ptrave=ptrave->next;
    }
    printf("%d",ptrave->num);
    cout<<endl;
}

int main()
{
    cout<<"带头指针,头指针为一随机值"<<endl;
    pNode p1=createList1();
    traver(p1);
    pNode p2=createList2();
    traver(p2);

    cout<<"不带头指针"<<endl;
    pNode p3=createList3();
    traver(p3);
    pNode p4=createList4();
    traver(p4);
    return 0;

}

输出结果:

带头指针,头指针为一随机值
0->0->1->2->3->4->5->6->7->8->9
0->9->8->7->6->5->4->3->2->1->0
不带头指针
0->1->2->3->4->5->6->7->8->9
9->8->7->6->5->4->3->2->1->0

猜你喜欢

转载自blog.csdn.net/u013069552/article/details/80958213