0
点赞
收藏
分享

微信扫一扫

创建单个结点

1.创建单个结点

SLTNode* BuySLTNode(SLTDataType x)
{
	SLTNode* newnode = (SLTNode*)malloc(sizeof(SLTNode));//申请空间
	if (newnode == NULL)//判断是否为空
	{
		perror("BuySLTNode malloc");
		exit(-1);
	}
	newnode->val = x;//赋值
	newnode->next = NULL;//next指针指向空
	return newnode;//返回创建的结点
}

2.创建具有n个结点的链表

SLTNode* CreateSList(int n) 
{
	int i = 0;
	SLTNode* ptail = NULL,*phead = NULL;
	for (i = 0; i < n; i++)
	{
		SLTNode* newnode = BuySLTNode(i); //创建新节点
		if (phead == NULL)
		{
			ptail = phead = newnode;
		}
		else
		{
			ptail->next = newnode; //链接
			ptail = newnode;
		}
	}
	return phead; //返回头节点
}
//没有返回值,形参使用的是二级指针改变头指针指向的地址。
//void CreateSList(SLTNode** pphead, int n)
//{
//	int i = 0;
//	SLTNode* ptail = NULL;
//	for (i = 0; i < n; i++)
//	{
//		SLTNode* newnode = BuySLTNode(i);
//		if (*pphead == NULL)
//		{
//			ptail = *pphead = newnode;
//		}
//		else
//		{
//			ptail->next= newnode;
//			ptail = newnode;
//		}
//	}
//}

上述代码中提供了两种实现方式,没有注释的是返回头指针的,注释内容是没有返回值,形参使用的是二级指针改变头指针指向的地址。

举报

相关推荐

0 条评论