题解 | #牛牛的单向链表#
牛牛的单向链表
https://www.nowcoder.com/practice/95559da7e19c4241b6fa52d997a008c4
#include <stdio.h> #include <stdlib.h> typedef struct TNode{ int val; struct TNode *next; }TNode, *Link; //创建一个链表 void create_link(Link *t) { //创建头结点 *t = (TNode*)malloc(sizeof(TNode)); (*t)->val = 0; (*t)->next = NULL; } //头插法插入节点 void add_head(Link *t, int val) { TNode * tem = (TNode*)malloc(sizeof(TNode)); tem->val = val; tem->next = NULL; tem->next = (*t)->next; (*t)->next = tem; } //尾插法插入节点 void add_end(Link *t, int val) { TNode * tem = (TNode*)malloc(sizeof(TNode)); tem->val = val; tem->next = NULL; TNode * p = (*t); while(p->next != NULL){ p = p->next; } p->next = tem; } //链表的遍历 void print(Link t) { //去除头结点 TNode*p = t->next; while(p){ printf("%d ", p->val); p = p->next; } } int main() { int n, i, tem; //创建链表 Link t; create_link(&t); scanf("%d", &n); for(i = 0; i < n; i++){ scanf("%d", &tem); add_end(&t, tem); } print(t); return 0; }
这里对链表进行初始化或者增删改查时,要传指针,否则就是值传递不会修改链表的值。