链表的基本概念以及静态链表和动态链表
2023-09-14 09:13:37 时间
链表概念:
链表使用说明:
画图示意:
静态链表
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
typedef struct LinkNode
{
int num;
LinkNode* next;
}Lk,*lk;
//Lk ------>struct LinkNode
//lk----->struct LinkNode*
void test01()
{
//静态链表
//Lk ------>struct LinkNode
Lk node1 = {10,NULL};
Lk node2 = { 20,NULL };
Lk node3 = { 30,NULL };
Lk node4 = { 40,NULL };
Lk node5 = { 50,NULL };
//建立关系
node1.next = &node2;
node2.next = &node3;
node3.next = &node4;
node4.next = &node5;
node5.next = NULL;
//lk----->struct LinkNode*
lk nodeCurrent = &node1;
//遍历输出
while (nodeCurrent)
{
printf("%d\n", nodeCurrent->num);
nodeCurrent = nodeCurrent->next;
}
}
int main()
{
test01();
return 0;
}
动态链表
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
typedef struct LinkNode
{
int num;
LinkNode* next;
}Lk,*lk;
//Lk ------>struct LinkNode
//lk----->struct LinkNode*
void test01()
{
//动态链表
lk node1 = (lk)malloc(sizeof(Lk));
lk node2 = (lk)malloc(sizeof(Lk));
lk node3 = (lk)malloc(sizeof(Lk));
lk node4 = (lk)malloc(sizeof(Lk));
lk node5 = (lk)malloc(sizeof(Lk));
//给数据赋值
node1->num = 10;
node2->num = 20;
node3->num = 30;
node4->num = 40;
node5->num = 50;
//建立联系
node1->next = node2;
node2->next = node3;
node3->next = node4;
node4->next = node5;
node5->next = NULL;
//lk----->struct LinkNode*
lk nodeCurrent = node1;
//遍历输出
while (nodeCurrent)
{
printf("%d\n", nodeCurrent->num);
nodeCurrent = nodeCurrent->next;
}
//释放堆区开辟内存
free(node1);
free(node2);
free(node3);
free(node4);
free(node5);
//防止野指针出现
node1 = NULL;
node2 = NULL;
node3 = NULL;
node4 = NULL;
node5 = NULL;
}
int main()
{
test01();
return 0;
}
相关文章
- LeetCode每日一题-6:k个一组翻转链表
- 判断链表中是否有环
- 删除有序链表中的重复元素
- 两个链表生成相加链表
- 【day10】LeetCode(力扣)刷题(注释详细)[707.设计链表][278.第一个错误的版本][98. 验证二叉搜索树]
- 学了链表牛刀小试,三种做法都吃透就算是学会了
- 数据结构(05)_链表01(单链表、静态单链表、单向循环链表)
- JavaScript刷LeetCode拿offer-链表篇
- C/C++中对链表操作的理解&&实例分析详解编程语言
- Linux下链表的基本实现(linux链表实现)
- MySQL链表查询技巧分享(mysql链表查询)
- Oracle实现交叉链表功能(oracle 交叉链表)
- 利用Redis链表设计节点的提高效率(redis链表设计节点)
- C语言实现静态链表的方法