建立单链表(尾插法)

建立单链表有两种方法,
这里采用头插法。

尾插法含义:
该方法是从一个空表开始,读取数组的元素,生成新节点,将读取的数据放到存放在新节点的数据域中,然后将该节点插入到链表的表头上,直到结束为止。
由于:头插法会让顺序与数组原顺序相反,所以这里要定义一个尾指针r 才可让顺序不变。

思路:(尾插法)
1.先建立一个头结点,r始终指向尾结点,开始时指向头结点
2.通过循环读取数组的元素,生成新节点
其中,第一,数据域赋值 第二,指针域更换
意思为:将新生成的结点插入头结点后
需要定义: 一个指针s指向新生成的结点,一个指针r指向尾结点。定义循环变量i
3,最后将尾结点置为空 r->next = null;

C代码实现:

void  CreateListF(Linklist * L,int a[], int n){
        Linklist * s,*r;  int i;
        L = (Linklist)malloc(sizeof(Linklist)); //建立头结点
        r = L;   //r始终指向尾结点,开始时指向头结点
        for(int i = 0; i < n; i++){
            s = (Linklist)malloc(sizeof(Linklist));
            s->data = a[i];
            r->next = s;
            r = s;
        }
        r->next = null; //尾结点置为空
}
### C语言单链表尾插法实现 在C语言中,通过尾插法创建单向链表是一种常见的操作方法。此过程涉及初始化一个空链表,并随着新节点的加入更新尾指针的位置。 对于每一个新的整数值输入(直到遇到终止条件),程序会分配一个新的节点空间并设置其`data`成员变量为读入的值;随后检查当前列表是否为空——如果是,则同时将头指针和尾指针指向这个新建的第一个节点;如果不是,则仅需调整现有尾部节点的`next`字段使其指向新增加的节点,并相应地移动尾指针[^1]。 下面是具体的代码实现: ```c #include <stdio.h> #include <stdlib.h> typedef struct LinkNode { int data; struct LinkNode *next; } linknode; typedef struct LinkNode* linklist; linklist createLinkByTailInsertion() { linklist head = NULL, tail = NULL, q; int x; printf("请输入整数序列,以-1结束\n"); scanf("%d", &x); while (x != -1) { q = (linklist)malloc(sizeof(linknode)); if (!q) exit(-1); /* 内存不足处理 */ q->data = x; q->next = NULL; if (head == NULL) head = tail = q; // 初始情况下,首尾都是同一个节点 else { tail->next = q; tail = q; // 更新尾指针位置 } scanf("%d", &x); } return head; } ``` 这段代码展示了完整的尾插法建表逻辑,其中包含了基本错误检测机制以及合理的内存管理实践。每当成功创建了一个新节点之后都会将其链接到已存在的链表末端,并且及时更新尾指针以便下一次插入能够继续发生在链表末尾[^2]。
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值