怎样生成一个链表

声明:本文参考郝斌老师的《数据结构自学视频》

今天和大家分享怎样生成一个链表。

分为以下几个步骤:

1 先生成一个头节点(头节点不存放有效数据);

2 在循环中生成首节点及其它节点。

-------------------------------------------------

typedef struct Node
{
int data; 
struct Node *pNode;


}NODE, * PNODE;


首先定义了一个结构体变量。下面的函数 create_list( ) 将用来生成其它的节点。

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->pNode = 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 ->pNode = pNew;
pNew ->pNode = NULL;
pTail = pNew;
}

return pHead; 
};


我想要明确的就是之所以我们定义了一个新的 struct Node * 类型的变量 pTail 的目的是为了能将上次循环生成的节点的地址放在 pTail 变量中,以链接下一个节点(首先为了防止上次循环产生的节点的地址丢失,其次是为了能将上次循环产生的节点地址进入下一个循环)。








  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值