C语言链表的思路
在创建链表之前,就是没有任何数据的时候、链表有几个节点?是只有头节点和头指针嘛?。。另外分析下创建链表的流程。最好像流水线那样的...
在创建链表之前,就是没有任何数据的时候、链表有几个节点?是只有 头节点和头指针嘛?。。另外分析下创建链表的流程。 最好像流水线那样的
展开
2个回答
展开全部
链表的一种数据格式:
typedef int DataType;
typedef struct LinkNode
{
DataType data;
struct LinkNode *next;
} LinkNode;
可以用一个
LinkNode * h;
来代表一个链表。所以这种情况下,链表没有任何数据就没有节点、且h 等于 NULL;
创建链表、为链表增加节点有4步:
申请新节点的堆内存
修改新节点的next 为NULL
读取数据写入到该内存的数据区间(从外部文件、网络、标准输入、内存拷贝...)
将新节点添加到链表尾部
创建链表代码实现如下:
LinkNode* Create_LinkList()
{
LinkNode *h = NULL; // 指向链表第一个数据节点
LinkNode *tail = NULL; // 指向链表最后一个节点
while ( 1 )
{
// 用户不断的输入数据,直到输入负数
int input ;
scanf("%d", &input);
if ( input < 0 ) {
break;
}
// 申请新节点内存
LinkNode *newNode = (LinkNode *)malloc(sizeof(LinkNode));
// 设置新节点的next
newNode->next = NULL;
// 填充数据
newNode->data = input;
// 添加到链表尾
if ( h == NULL ) {
// 若表头为NULL,说明新节点为第一个节点,则表头和表尾都为新节点
h = tail = newNode;
} else {
// 否则将tail->next指向新节点,并更新表尾
tail->next = newNode;
tail = newNode;
}
}
// 返回链表第一个节点的指针
return h;
}
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询