博客
关于我
链表学习:静态链表
阅读量:729 次
发布时间:2019-03-21

本文共 1390 字,大约阅读时间需要 4 分钟。

链表概念

链表由一系列节点组成,每个节点包含两个域:数据域用于存储数据,指针域用于存储指向下一个节点的地址。在内存中,链表存储是非连续的。 例如: ```struct LinkNode{ int age; struct LinkNode* next; }```链表相比数组的主要优点是插入和删除操作效率高,但随机访问单个节点效率相对较低。

链表分类

链表可以分为以下几种: - 静态链表:节点数量和大小在编译时确定 - 动态链表:节点数量和大小在运行时动态扩展或缩减

链表还可以分为单向链表、双向链表和循环链表等形式。常见的链表结构包括:

  • 单向链表( Establishhd singly linked list, 简单链表)
  • 双向链表( doubly linked list, 双向链表)
  • 循环链表( circular linked list, 循环链表)
  • 单向循环链表( singly circular linked list, 单向循环链表)

链表与数组的主要区别

- **数组**:一次分配一块连续的存储空间。在使用时需要通过索引访问,随机访问效率高。 - **链表**:按需分配存储空间,只需将指针指向下一个节点即可,插入和删除操作效率高,但随机访问效率较低。

数组的优缺点:

  • 需要一次分配连续的内存区域,可能导致内存不足
  • 删除和插入元素效率低
  • 链表的优缺点:

  • 不需要一次性分配连续内存
  • 删除和插入元素效率高
  • 随机访问效率低
  • 静态链表的使用示例

    以下是静态链表的简单实现:
    #include 
    struct LinkNode{ int data; struct LinkNode* next; }; void test(){ struct LinkNode node1 = {10, NULL}; struct LinkNode node2 = {20, NULL}; struct LinkNode node3 = {30, NULL}; struct LinkNode node4 = {40, NULL}; struct LinkNode node5 = {50, NULL}; struct LinkNode node6 = {60, NULL}; node1.next = &node2; node2.next = &node3; node3.next = &node4; node4.next = &node5; node5.next = &node6; // 遍历链表 struct LinkNode* pCurrent = &node1; while (pCurrent != NULL) { printf("%d ", pCurrent->data); pCurrent = pCurrent->next; } } int main(){ test(); return 0; }

    注意事项:

    • 类似于数组的静态链表在最坏情况下可能会导致栈溢出或内储不足。
    • 对于更复杂的链表操作,建议使用动态链表。

    转载地址:http://vwlgz.baihongyu.com/

    你可能感兴趣的文章
    Objective-C实现max non adjacent sum最大非相邻和算法(附完整源码)
    查看>>
    Objective-C实现max subarray sum最大子数组和算法(附完整源码)
    查看>>
    Objective-C实现max sum sliding window最大和滑动窗口算法(附完整源码)
    查看>>
    Objective-C实现MaxHeap最大堆算法(附完整源码)
    查看>>
    Objective-C实现MaximumSubarray最大子阵列(Brute Force蛮力解决方案)算法(附完整源码)
    查看>>
    Objective-C实现MaximumSubarray最大子阵列(动态规划解决方案)算法(附完整源码)
    查看>>
    Objective-C实现maxpooling计算(附完整源码)
    查看>>
    Objective-C实现max_difference_pair最大差异对算法(附完整源码)
    查看>>
    Objective-C实现max_heap最大堆算法(附完整源码)
    查看>>
    Objective-C实现MD5 (附完整源码)
    查看>>
    Objective-C实现md5算法(附完整源码)
    查看>>
    Objective-C实现MeanSquareError均方误差算法 (附完整源码)
    查看>>
    Objective-C实现median filter中值滤波器算法(附完整源码)
    查看>>
    Objective-C实现memcmp函数功能(附完整源码)
    查看>>
    Objective-C实现memcpy函数功能(附完整源码)
    查看>>
    Objective-C实现memoization优化技术算法(附完整源码)
    查看>>
    Objective-C实现memset函数功能(附完整源码)
    查看>>
    Objective-C实现merge insertion sort合并插入排序算法(附完整源码)
    查看>>
    Objective-C实现merge sort归并排序算法(附完整源码)
    查看>>
    Objective-C实现mergesort归并排序算法(附完整源码)
    查看>>