链表初始化

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

struct Node 
{
	int vual;
	struct Node *link;
};

void init(Node **Plink);
int create(Node **plink);
int insert(Node *plink);
int print(Node *plink);

int main()
{
	Node *number;
	init(&number);
	print(number);
	create(&number);
	print(number);
	return 1;
}

void init(Node **Plink)
{
	*Plink = NULL;
	printf("初始化结束!\n");
}

int print(Node *plink)
{
	if (NULL == plink)
	{
		printf("链表为空!\n");
		return 0;
	}
	
	while (NULL != plink)
	{
		printf("vual = %d\n",plink->vual);
		plink = plink->link;
	}

	printf("\n");
	return 1;
}
int create(Node **plink)
{
	Node *p1;
	Node *p2;

	p1=p2=(Node *)malloc(sizeof(Node)); //申请新节点
	if(p1 == NULL || p2 ==NULL)
	{
		printf("内存分配失败\n");
		exit(0);
	}
	memset(p1,0,sizeof(Node));

	int i;
	p1->vual=0;   //输入新节点
	p1->link = NULL;            //新节点的指针置为空

	for (i=1; i<5; i++)
	{
		if(*plink == NULL)       //空表,接入表头
		{
			*plink = p1;
		}
		else
		{
			p2->link = p1;      //非空表,接入表尾
		}
		p2 = p1;
		p1=(Node *)malloc(sizeof(Node));    //再重申请一个节点
		if(p1 == NULL || p2 ==NULL)
		{
			printf("内存分配失败\n");
			exit(0);
		}
		memset(p1,0,sizeof(Node));
		p1->vual = i*5;
		p1->link = NULL;

	}	
	return 1;
}

链表创建是初始化,产生两个疑问

一、为什么要用两个Node指针,把为什么不能把p2->link = p1;p2 = p1;换成plink->link = p1;plink = p1呢?

二、for运行第一次时,p1同时给p2个plink,的原因是什么?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值