qq_43412960
qq_43412960
2020-03-22 10:54
采纳率: 79.1%
浏览 261

这是一个关于数据结构 线性表的问题

想不明白数据结构线性表有什么意义,感觉有数组就够用了。为啥非要研究出来个线性表呢?数据实现还简单,也能封装增删查改的代码

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • caozhy
    已采纳

    线性表是数组的一个应用。
    你的问题好比问
    面包有什么意义,有面粉就行了。
    线性搜索有什么意义,有for循环就行了。

    点赞 评论
  • weixin_45994861
    weixin_45994861 2020-03-22 11:02

    线性表主要实现动态分配空间, 在实际空间不确定时很有用, 你不可能为一个不确定大小的
    空间分配一个无限大的空间

    点赞 评论
  • weixin_39872903
    weixin_anvirzh0612 2020-03-22 13:25

    您好,早期编译器不支持动态数组,比如C89就只支持静态数组,在编译的时
    候须要知道数组大小。如果数组大小须要在程序运行时才能确认大小,就须要
    用到线性链表。C99支持动态数组,但它们还是有一些区别和应用场景的。
    线性表:属于逻辑结构中的线性结构,它包括顺序表和链表。
    顺序表:线性表中的一种,它是用数组来实现的一种线性表,所以它的存储结构(物理结构)是连续的。
    链表:线性表中的一种,它的存储结构是用任意一组存储单元来存储数据元素。所以它的存储结构可以是连续的,也可以不是连续的。
    数组:一种物理结构,它的存储单元是连续的。
    当内存中只有一些离散的可用空间时,想连续存储数据就困难了, 这时用链表解决问题。

    点赞 评论
  • Varible
    Varible 2020-03-22 15:30

    线性表又叫 链表 ,是 动态储存 ;数组的储存方式叫 顺序储存

    线性表主要解决的是空间问题,空间多少手动增加。

    • 线性表: 以时间换空间,就如你说用的麻烦,时间花费很多,但空间多少可以中途增加减少。
    • 数组: 以空间换时间,虽然用起来方便快捷,但开头必须开足够大的空间(还要注意爆内存),否则会出现不够用、越界。

    提示一下: 其实把线性表的操作改成函数方便些。

    数组:(int a[7] = {3,3331,-29,666,23456)
    0x0100: 3
    0x0104: 3331
    0x0108: -29
    0x010B: 666
    0x010E: 23456
    0x0111: 0
    0x0115: 0
    线性表:
    //*head = new __Node;
    //head->next = NULL;
    //tail = head;
    0x0100: { ;head,tail
     0x0100: 0 ;data
     0x0104: {0} ;__Node next = NULL;
    }
    /*
     ptr = new __Node;
     ptr->data = 666;
     ptr->next = NULL;
     tail->next = ptr;
     tail = ptr;
    */
    0x....: { ;ptr
     0x....: 666 ;data
     [0x.... + 4]: {0} ;next
    }
    
    ;然后将ptr接到tail后一个指向的位置。
    ;tail后移到ptr。
    

    我上面举了个例子,当然RAM不会这么有顺序地分配内存。

    点赞 评论

相关推荐