标签:方法 include 思维 位置 创建 list null str init
单链表的整表创建有两种方法、一种是采用头插法、就是始终让新结点在第一个位置。另一种是采用尾插法、每次把新结点都插在终端结点的后面,按照排队时的正常思维,所谓的先来后到。
整体思路:
代码如下:
/**
* 尾插法创建单链表
**/
#include <stdio.h>
#include <stdlib.h>
typedef struct students
{
int id;
struct students *next;
} stus;
//单链表整表创建
stus *initList()
{
stus *p = (stus *)malloc(sizeof(stus)); //头节点、一直不动、返回出去然后根据头节点遍历链表
stus *l = p; //尾节点、初始时和头节点指向同一个位置
int i;
for (i = 1001; i <= 1005; i++)
{
stus *s = (stus *)malloc(sizeof(stus)); //新节点
s->id = i; //新阶段数据域
s->next = NULL; //新阶段指针域
l->next = s;
l = s; //将尾节点移动到当前新节点的位置
}
return p;
}
尾插法每次将新节点放在最后位置、然后移动尾指针向后移动、始终指向最后一个节点。
整体思路:
代码实现:
/**
* 头插法创建单链表
**/
#include <stdio.h>
#include <stdlib.h>
typedef struct students
{
int id;
struct students *next;
} stus;
stus *initList()
{
stus *p = (stus *)malloc(sizeof(stus)); //头节点、一直不动、返回出去然后根据头节点遍历链表
p->next=NULL;
int i;
for (i = 1001; i <= 1005; i++)
{
stus *s = (stus *)malloc(sizeof(stus)); //新节点
s->id = i;
s->next = p->next;
p->next = s;
}
return p;
}
头插法用的是插队的办法,就是始终让新结点在第一的位置、所以每次都要将原来第一个节点赋值给新节点的next指针域、然后将新节点赋值给头节点的next指针域、这样新节点就是第一个节点了,而原来第一个节点的位置就变成第二个节点的位置了。
标签:方法 include 思维 位置 创建 list null str init
原文地址:https://www.cnblogs.com/dcy521/p/14830617.html