不回19 2022-11-06 22:48 采纳率: 0%
浏览 8

求解答,这是为什么,链表问题有点难

我看不懂为什么可以使pTain永远指向尾结点,这一步是是什意思pTain =pNew,还有这一步 PNODE pTail = pHead;
pTail->pNext = NULL;
总的代码是:

include <stdio.h>

include <malloc.h>

include <stdlib.h>

typedef struct Node
{
int data; //数据域
struct Node * pNext; //指针域
}NODE, *PNODE; //NODE 等价于struct node , PNODE等价于struct node *

//函数声明
PNODE create_list(void);
void traverse_list(PNODE pHead);

int main(void)
{
PNODE pHead = NULL;
pHead = create_list(); //创建一个非循环单链表,并将该链表的头节点的地址赋给phead
traverse_list(pHead); //

return 0;

}

PNODE create_list(void)
{
int len; //用来存放有效结点个数
int i;
int val; //用来临时存放用户输入的节点的值

//创建一个不存放数据的头节点 
PNODE pHead = (PNODE)malloc(sizeof(NODE));

if (NULL == pHead)
{
    printf("分配失败!\n");
    exit(-1);
}

PNODE pTail = pHead;
pTail->pNext = NULL;

printf("请输入您要输入的链表节点个数:len =");
scanf("%d", &len);

for (i=0; i<len; ++i)
{
    printf("请输入第%d个节点的值", i+1);
    scanf("%d", &val);
    
    PNODE pNew = (PNODE)malloc(sizeof(NODE));
    if (NULL == pNew)
    {
        printf("分配失败!\n");
        exit(-1);
    }
    pNew->data = val;
    pTail->pNext = pNew;
    pNew->pNext = NULL;
    pTail = pNew;
}

return pHead;

}

void traverse_list(PNODE pHead)
{
PNODE p = pHead->pNext;
while (NULL != p)
{
printf("%d", p->data);
p = p->pNext;
printf("\n");
}
printf("\n");

include <stdio.h>

include <malloc.h>

include <stdlib.h>

typedef struct Node
{
int data; //数据域
struct Node * pNext; //指针域
}NODE, *PNODE; //NODE 等价于struct node , PNODE等价于struct node *

//函数声明
PNODE create_list(void);
void traverse_list(PNODE pHead);

int main(void)
{
PNODE pHead = NULL;
pHead = create_list(); //创建一个非循环单链表,并将该链表的头节点的地址赋给phead
traverse_list(pHead); //

return 0;

}

PNODE create_list(void)
{
int len; //用来存放有效结点个数
int i;
int val; //用来临时存放用户输入的节点的值

//创建一个不存放数据的头节点 
PNODE pHead = (PNODE)malloc(sizeof(NODE));

if (NULL == pHead)
{
    printf("分配失败!\n");
    exit(-1);
}

PNODE pTail = pHead;
pTail->pNext = NULL;

printf("请输入您要输入的链表节点个数:len =");
scanf("%d", &len);

for (i=0; i<len; ++i)
{
    printf("请输入第%d个节点的值", i+1);
    scanf("%d", &val);

}

  • 写回答

1条回答 默认 最新

  • 「已注销」 2022-11-07 06:52
    关注

    自己手动画一个链表插入流程图就明白了

    评论

报告相同问题?

问题事件

  • 创建了问题 11月6日

悬赏问题

  • ¥15 C# 爬虫融通金网址实时银价
  • ¥20 ESP32使用MicroPyhon开发,怎么获取485温湿度的值,温湿度计使用的鞋子是Modbus RTU
  • ¥50 苹果MGIE项目部署缺少emb权重
  • ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
  • ¥15 单片机adb主机连接手机,usb调试密钥无法保存
  • ¥15 已知X和Y有以下关系,求X和Y的关系式
  • ¥15 net core 同时编辑怎么防止数据多保存了
  • ¥15 matlab做ba模型让其在ba和er规则下生长
  • ¥15 请问Quartus的Verilog代码怎么写?
  • ¥100 Mac 版foxmail 收邮件问题