开发工具与关键技术:
作者:#33
撰写时间:撰写时间:2020年05月08日
线性表的学习
线性表的概念:
线性表是一种简单的线性结构,特点是在非空的有限集合中,且第一个元素没有直接前驱元素,最后一个元素没有直接后继元素,其他元素都有唯一的前驱和后继元素。线性表有顺序存储结构和链式存储结构。
线性表的定义:
特征:
1.在非空的线性表,有且仅有一个开始结点a1,它没有直接前驱,而仅有一个直接a2;
2.有且仅有一个终结点an,它没有直接后继,而仅有一个前趋an-1;
3.其余内部节点ai(2<=i<=n-1)都有且仅有一个直接前趋ai-1和一个直接后继ai+1。
基本运算:
1、求表长—求线性表中的元素的个数
2、遍历—从左到右(或从右到左)扫描(或读取)表中的各元素
3、按编号查找—找出表中第i个元素
4、按特征查找—按某个特定值查找线性表
5、插入—在第i个位置上(即原第i个元素前)插入一个元素
6、删除—删除原表中第i个元素
7、排序—按元素某特征值的递增(或递减)排序,重排表中各元素。
一、顺序表:特点(元素按顺序排列,地址连续)
|
//插入操作,位置i插入字符x public void insert(int i,Object x)throws Exception{ ...//省略为i的合理范围 for(int i =size;j>i;j--){ listArray[j] = listArray[j-1];//元素依次向后移动 } listArray[j] =x;//向第i个位置插入新元素x size++;//表长度加1} |
|
//删除操作 public Object delete(int i)throws Exception{ ......//省略为i的合理范围 Object it=listArray[i] //备份所删除的元素 for(int i =size;j>size-i;j++){listArray[j] = listArray[j+1];//元素依次向前移动 } Size--;//表长度减1 return it;} |
二、链表:
链表不是地址连续的空间,他的插入和删除不需要移动元素,它看到内存有空余地址就可以毫无顾忌地挤进去,所以我们叫它”调皮的链表“
单链表结点的插入和删除:
单链表中构成链表结点只有一个指向直接后继结点的指针域。
其结构特点:逻辑上相邻的数据元素在物理上不一定相邻。

- 在带头结点单链表的数据元素前插入节点:

定位:
|
public void index(int i)throws Exception{ if(i==-1)return; current=head.next; int j=0; while((current!=null)&&j>i){current=current.next; j++;}} |
插入:
|
public void insert(int i,Object obj)throws Exception{ indext(i-1);//定位一个元素 current.setNext(new Node(obj,current.next)); size++;} |

删除:
|
public void delete(int i,Object obj)throws Exception{ indext(i-1);//定位一个元素 Object obj=current.next.getElement();//取元素 current.setNext(current.next.next); size--;//元素减一 reurn obj;} |

2400

被折叠的 条评论
为什么被折叠?



