现在位置: 首页 > 数据结构
这是一个典型的错误思考方向。 错误的根源在于,把链表当成了一种整体的、不可分割不可更改的完整概念——然后,就着这个概念,考虑它的用途它的优点它的弱点,总结出一二三四然后背诵……完了。 完蛋。这叫买椟还珠。 实际上,讲链表是为了给你引出“借助后向指针(next)组织数据”这么一个设计思路;同时借助这个思路完成一个典型的应用案例、学着分析它的空间/时间复杂度…… 然后,马上领着你变换它、变形它、改进它…… 比如,加上一...
阅读全文
2019-07-24 06:14 工业·编程 ⁄ 共 1482字 暂无评论
队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。允许插入的一端为队尾(入队),允许删除(出队)的一端为队头。 顺序存储的队列是采用数组来实现的,但由于数组是静态的,在队列的出队和入队的操作下会出现整个队列后移逐渐占用下标加大位置而下标较小位置为空的“假溢出”现象,所以采用了将存储队列的数组看成是头尾相接的循环结构,即允许队列直接从数组的下标最大的位置延续到下标最小的位置。...
阅读全文
2019-04-14 21:23 工业·编程 ⁄ 共 13228字 暂无评论
1.栈 1.1 栈的定义 栈是一种特殊的线性表。其特殊性在于限定插入和删除数据元素的操作只能在线性表的一端进行。如下所示: 结论:后进先出(Last In First Out),简称为LIFO线性表。 栈的基本运算有六种: 构造空栈:InitStack(S)、 判栈空: StackEmpty(S)、 判栈满: StackFull(S)、 进栈: Push(S,x)、可形象地理解为压入,这时栈中会多一个元素 退栈: Pop(S) 、 可形象地理解为弹出,弹出后栈中就无此元素了。 取栈顶元素...
阅读全文
2019-04-07 21:20 工业·编程 ⁄ 共 8142字 暂无评论
1. 线性表:n个数据元素的有序集合。 线性表是一种常用的数据结构。在实际应用中,线性表都是以栈、队列、字符串、数组等特殊线性表的形式来使用的。由于这些特殊线性表都具有各自的特性,因此,掌握这些特殊线性表的特性,对于数据运算的可靠性和提高操作效率都是至关重要的。 线性表是一个线性结构,它是一个含有n≥0个结点的有限序列,对于其中的结点,有且仅有一个开始结点没有前驱但有一个后继结点,有且仅有一个终端结点没...
阅读全文
2018-12-08 19:22 工业·编程 ⁄ 共 2593字 暂无评论
生活中有很多队列的影子,比如打饭排队,买火车票排队问题等,可以说与时间相关的问题,一般都会涉及到队列问题;从生活中,可以抽象出队列的概念,队列就是一个能够实现“先进先出”的存储结构。队列分为链式队列和静态队列;静态队列一般用数组来实现,但此时的队列必须是循环队列,否则会造成巨大的内存浪费;链式队列是用链表来实现队列的。这里讲的是循环队列,首先我们必须明白下面几个问题。 一、循环队列的基础知识 1.循...
阅读全文
2013-07-30 06:41 工业·编程 ⁄ 共 6627字 暂无评论
首先先来看看2个程序,第一次看会死人的。  #include <stdio.h>  struct test{  unsigned int a1;  unsigned char a2;  unsigned short a3;  unsigned char a5;  unsigned int a4;  };  int main(void)  {  printf("a:%d/n",sizeof(struct test));  return 0;  }  显示16  ----------  #include <stdio.h>  struc...
阅读全文