算:C语言链表的创建和遍历

链表是一种常见的重要的数据结构。它是动态地进行存储分配的一种结构。它可以根据需要开辟内存单元。链表有一个“头指针”变量,以head表示,它存放一个地址。该地址指向一个元素。链表中每一个元素称为“结点”,每个结点都应包括两个部分:一为用户需要用的实际数据,二为下一个结点的地址。因此,head指向第一个元素:第一个元素又指向第二个元素;……,直到最后一个元素,该元素不再指向其它元素,它称为“表尾”,它的地址部分放一个“NULL”(表示“空地址”),链表到此结束。

下面是简单的代码展示:

    #include<stdio.h>
     
    //定义了
    struct Node
    {
        int data;
        struct Node * pNext;
    };
    /*
    头结点:是头结点是首节点前的那个节点
            并不存放数据的数据
            头结点的数据类型和首节点的类型一模一样
            未来方便对链表的操作
    头指针:存放头结点地址的指针变量
    首节点:存放第一个有效数据的节点
    尾节点:存放最后一个有效数据的节点
    */
    struct Node * CreateList(void);
    void TraverseList(struct Node * pHead);
    int main(void)
    {
        struct Node * pHead=NULL;//定义头指针,用来存放链表
     
        pHead=CreateList();
        TraverseList(pHead);
     
        return 0;
    }
    struct Node * CreateList(void)
    {
        int len;
        int i;
        int val;
        struct Node * pHead=(struct Node *)malloc(sizeof(struct Node));
        if(NULL==pHead)
        {
            printf("分配失败,程序终止!\n");
            exit(-1);
        }
        struct Node * pTail=pHead;
        pTail->pNext=NULL;
     
        printf("请输入需要生成的链接节点的个数:len=");
        scanf("%d",&len);
        for(i=0;i<len;++i)
        {
            printf("请输入第%d个节点的值:",i+1);
            scanf("%d",&val);
     
            struct Node * pNew=(struct Node *)malloc(sizeof(struct Node));
            if(NULL==pNew)
            {
                printf("分配失败,程序终止!\n");
                exit(-1);
            }
            pNew->data=val;
            pTail->pNext=pNew;
            pNew->pNext=NULL;
            pTail=pNew;
        }
        return pHead;
    }
     
    void TraverseList(struct Node * pHead)
    {
        struct Node * p=pHead->pNext;
        if(pHead->pNext==NULL)
        {
            printf("链表为空!");
        }
        else
        {
            while(p!=NULL)
            {
                printf("%d",p->data);
                p=p->pNext;
            }
     
        }
    }

 
---------------------  
作者:鹈鹕门将  
来源:CSDN  
原文:https://blog.csdn.net/tihumenjiang/article/details/64125937  
版权声明:本文为博主原创文章,转载请附上博文链接!

猜你喜欢

转载自blog.csdn.net/hunter___/article/details/88594983