线性表的学习

  

开发工具与关键技术:

作者:#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;}

二、链表:

链表不是地址连续的空间,他的插入和删除不需要移动元素,它看到内存有空余地址就可以毫无顾忌地挤进去,所以我们叫它”调皮的链表“

单链表结点的插入和删除:

单链表中构成链表结点只有一个指向直接后继结点的指针域。

其结构特点:逻辑上相邻的数据元素在物理上不一定相邻。

 

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

 

定位:

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;}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值