C语言在实现单链表存储时需要注意的几点:
1.定义结构体,typedef:用于给结构体另命名
// 定义结构体类型
typedef struct Node{
int data;
struct Node *next;
}Node,*LinkedList;
2.链表初始化
// 链表初始化
LinkedList LinkedListInit(){
Node *Head,*L,*LNew;
// 申请节点空间
Head = (Node *)malloc(sizeof(Node));
// 判断是否有足够内存空间
if(Head == NULL){
printf("申请空间失败\n");
exit(-1);
}
L = Head;
L->next = NULL;
for(int i=0;i<3;i++){
// 分配第一个节点
LNew = (Node *)malloc(sizeof(Node));
// 判断是否有足够内存空间
if(LNew == NULL){
printf("申请空间失败\n");
exit(-1);
}
LNew->data = i;
L->next = LNew;
LNew->next = NULL;
L = LNew;
}
return Head;
}
具体源码demo.c
#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
// 定义结构体类型
typedef struct Node{
int data;
struct Node *next;
}Node,*LinkedList;
// 链表初始化
LinkedList LinkedListInit(){
Node *Head,*L,*LNew;
// 申请节点空间
Head = (Node *)malloc(sizeof(Node));
// 判断是否有足够内存空间
if(Head == NULL){
printf("申请空间失败\n");
exit(-1);
}
L = Head;
L->next = NULL;
for(int i=0;i<3;i++){
// 分配第一个节点
LNew = (Node *)malloc(sizeof(Node));
// 判断是否有足够内存空间
if(LNew == NULL){
printf("申请空间失败\n");
exit(-1);
}
LNew->data = i;
L->next = LNew;
LNew->next = NULL;
L = LNew;
}
return Head;
}
int main(int argc, char const *argv[]) {
/* code */
Node *p;
p = LinkedListInit();
p = p->next;
while(p != NULL){
printf("%d\n",p->data);
p = p->next;
}
return 0;
}

来源:https://www.cnblogs.com/xiaomingzaixian/p/9395860.html