C语言链表尾插法为什么我只能插入后两个

#include<stdio.h>#include<stdlib.h>typedefstructmyStruct{intdate;structmyStruct*pNext... #include <stdio.h>
#include <stdlib.h>

typedef struct myStruct
{
int date;
struct myStruct *pNext;
}Snake;

Snake *add(Snake *pHead,int date)
{
Snake *pNew = (Snake*)malloc(sizeof(Snake)); //尾插法
Snake *pTile = pHead; //备份一下头节点
pNew->date = date;
pNew->pNext = NULL;
if(pHead == NULL)
{
pHead = pNew;
}
else
{
while(pTile->pNext)
{
pTile = pTile->pNext; //循环前进
}
pTile->pNext = pNew;
}
}
void show(Snake *p) //打印
{
if(p == NULL)
{
return ;
}else
{
printf("%d,%p,%p\n",p->date,p,p->pNext);
show(p->pNext);
}
}

int main()
{
Snake *pHead = NULL;
pHead = add(pHead,11);
pHead = add(pHead,12);
pHead = add(pHead,13);
pHead = add(pHead,14);
pHead = add(pHead,15);
show(pHead);
system("pause");
return 0;
}
展开
 我来答
瑞候端瓜0Y
2017-05-21 · TA获得超过2039个赞
知道小有建树答主
回答量:323
采纳率:100%
帮助的人:94.2万
展开全部
//函数add()有返回值,在末尾要有return pHead;

#include <stdio.h>
#include <stdlib.h>

typedef struct myStruct
{
    int date;
    struct myStruct *pNext;
}Snake;

Snake *add(Snake *pHead,int date)
{
    Snake *pNew = (Snake*)malloc(sizeof(Snake)); //尾插法
    Snake *pTile = pHead; //备份一下头节点
    pNew->date = date;
    pNew->pNext = NULL;
    if(pHead == NULL)
    {
        pHead = pNew;
    }
    else
    {
        while(pTile->pNext)
        {
            pTile = pTile->pNext; //循环前进
        }
        pTile->pNext = pNew;
    }

    return pHead; //增加这个返回语句
}
void show(Snake *p) //打印(递归法)
{
    if(p == NULL)
    {
        return ;
    }
    else
    {
        printf("%d,%p,%p\n",p->date,p,p->pNext);
        show(p->pNext);
    }
}

int main()
{
    Snake *pHead = NULL;
    pHead = add(pHead,11);
    pHead = add(pHead,12);
    pHead = add(pHead,13);
    pHead = add(pHead,14);
    pHead = add(pHead,15);
    show(pHead);
    system("pause");
    return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式