JAVA数据结构

数据结构

包括:线性结构(一一对应)和非线性结构 线性结构(顺序存储和链式存储):数组、队列、链表、栈
非线性结构:二维数组,多维数组,广义表,树结构,图结构

稀疏数组

第一行代表原二维数组一共有几行几列有几个非零的数,从而缩小规模

JAVA数据结构_第1张图片

普通队列的数组实现

  • 队列构造:队首front(-1)(指向队首元素前一个),队尾rear(-1)(指向队尾元素),MAXSIZE,队列数组arr。
  • 判断空 front==rear
  • 判断满 rear = MAXSIZE-1
  • 入队列 arr[rear]=data
  • 出队列 data=arr[front]

环形队列数组实现

JAVA数据结构_第2张图片

  • 队首front(0)指向队首元素,队尾rear(0)指向队尾元素的后一个元素
  • 队列空:rear == front
  • 队列满:rear+1 % maxsize == front
  • 队列元素个数:(rear-front+maxsize)%maxsize
  • 解释:为了让队列满和空有区别,因此让rear指向队尾的后一个元素,把rear指向的那个空间空着,因此队列满的情况下,rear会距离front还有1个位置,rear+1%maxsize==front才是队列满
  • 队列元素个数,为什么要加maxsize因为,当rear转回去的时候,他是从0开始的,会不够减front,因此加上maxsize才能够减

单链表

JAVA数据结构_第3张图片1首先创建一个头结点,头结点不存放具体数据,只是用来提示next的地址
2 最后一个结点next指向null
3 遍历的时候一般用一个临时变量,将头结点copy到这个临时变量temp,通过temp遍历链表

单链表构造:类中包含数据和下一个结点,头结点中数据为空
链表插入:首先把头结点赋值给temp,通过temp遍历整个链表,找到temp.next==null即为尾结点,将新结点,放到尾结点之后
链表遍历:如果temp不是最后一个结点,那么输出temp的tostring
JAVA数据结构_第4张图片

你可能感兴趣的:(学习)