• 数据结构链表创建与输出


    一下是自己学习并编写的链表的创建和输出过程,简单易懂。

    #include <stdio.h>
    #include <stdlib.h>
    #include <malloc.h>
    
    struct ListNode
    {
        int data;
        struct ListNode *next;
    };
    
    typedef struct ListNode list;
    
    list *createList(int b)
    {
        int i,a;
        list *head=NULL,*curNode=NULL,*tailNode=NULL; //此处除head,我们创建两个指针curNode和tailNode
                                                      //curNode总是指向当前创建的节点,tailNode总是指向链表的结尾
        for(i=0;i<b;i++)
        {
            curNode=(list *)malloc(sizeof(struct ListNode)); //申请内存空间并判断是否成功
            if(NULL==curNode)
            {
                printf("Allocate  memry failed......");
                break;
            }
    
            printf("请输入链表中的第%d个数:",i);      //输入链表中的数并把值赋给刚创建的curNode节点
            scanf("%d",&a);
            curNode->data=a;
    
            if(head==NULL)                              //这个循环只执行一次,目的就是为了定位头节点,以便使头节点一直指向第一个节点。
            {
                head=curNode;
                tailNode=curNode;
            }
            else
            {
                tailNode->next=curNode;            //移动节点指针的时候一定要注意移动的先后顺序,比如此处
                tailNode=curNode;
            }
        }
        tailNode->next=NULL;
        return head;
    
    }
    
    int main(void)
    {
        int n;
        list *newNode=NULL;
    
        printf("输入要创建链表的长度:");
        scanf("%d",&n);
    
        newNode=(list *)malloc(sizeof(struct ListNode));
        newNode=createList(n);
    
        while(newNode)
        {
            printf("%d",newNode->data);
            newNode=newNode->next;
        }
        printf("\n");
        free(newNode);          //有malloc就一定有free,不用了一定要归还系统
        return 0;
    }

    一定要记住链表创建的步骤,理解每一步

  • 相关阅读:
    电力基本知识
    .net图表工具汇总
    最重要的十年做什么才不浪费?
    花10分钟看一看少走30年弯路
    给明年依然年轻的我们
    Qt经典—线程、事件与Qobject
    C#源码500份
    .NET 性能优化方法总结==转
    qt +ChartDirector 绘制图表
    创业者,你为什么这么着急?
  • 原文地址:https://www.cnblogs.com/foundwant/p/2710437.html
Copyright © 2020-2023  润新知