C语言链表的思路

在创建链表之前,就是没有任何数据的时候、链表有几个节点?是只有头节点和头指针嘛?。。另外分析下创建链表的流程。最好像流水线那样的... 在创建链表之前,就是没有任何数据的时候、链表有几个节点?是只有 头节点和头指针嘛?。。另外分析下创建链表的流程。 最好像流水线那样的 展开
 我来答
认不倒你
2015-11-22 · TA获得超过666个赞
知道小有建树答主
回答量:820
采纳率:50%
帮助的人:355万
展开全部

链表的一种数据格式:

typedef int DataType;

typedef struct LinkNode 
{
    DataType data;
    struct LinkNode *next;
} LinkNode;

可以用一个

LinkNode * h;

来代表一个链表。所以这种情况下,链表没有任何数据就没有节点、且h 等于 NULL;

创建链表、为链表增加节点有4步:

  1. 申请新节点的堆内存

  2. 修改新节点的next 为NULL

  3. 读取数据写入到该内存的数据区间(从外部文件、网络、标准输入、内存拷贝...)

  4. 将新节点添加到链表尾部


创建链表代码实现如下:

LinkNode* Create_LinkList()
{
    LinkNode *h = NULL;    //  指向链表第一个数据节点
    LinkNode *tail = NULL;    // 指向链表最后一个节点
    
    while ( 1 )
    {
        // 用户不断的输入数据,直到输入负数
        int input ;
        scanf("%d", &input);
        if ( input < 0 ) {
            break;
        }
        // 申请新节点内存
        LinkNode *newNode = (LinkNode *)malloc(sizeof(LinkNode));
        // 设置新节点的next
        newNode->next = NULL;
        // 填充数据
        newNode->data = input;
        // 添加到链表尾
        if ( h == NULL ) {       
        // 若表头为NULL,说明新节点为第一个节点,则表头和表尾都为新节点
            h = tail = newNode;
        } else {
            // 否则将tail->next指向新节点,并更新表尾
            tail->next = newNode;
            tail = newNode;
        }
    }
    // 返回链表第一个节点的指针
    return h;
}
447587096
2015-11-22 · TA获得超过5043个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1138万
展开全部

这里面有链表的详细视频,你看了就懂了

追问
你来分析一下。我不要视频。不要问我原因,你要是能解答就解答,不能解答就算了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式