码迷,mamicode.com
首页 > 其他好文 > 详细

大话数据结构---顺序存储结构的线性表

时间:2017-09-02 23:22:51      阅读:221      评论:0      收藏:0      [点我收藏+]

标签:void   http   null   string   顺序存储   ++   线性表的基本操作   朋友   长度   

         线性表的定义:零个或多个数据元素的有限序列。

 

定义的解读:

  1. 首先是由一组数据元素组成,可以基本数据类型,也可以使自定义的类型,
  2. 有限的个数,当然可以是0个,也就是空表呗,
  3. 还有一个特点就是有序

 这么一看线性表抽象出来就和生活中的排队一样,一群小朋友站成一队,每个人都知道自己站在第几个,自己的前面是谁,后面谁,除了排头排位的两个数据,每个数据都有唯一的前驱和后继。

技术分享

线性表的分类

                技术分享

 

 

今天先学习一下顺序存储结构,顺序存储结构指的就是用一段地址连续的存储单元依次存储线性表的数据元素;

这么一看线性表挺像数组的嘛,没错,顺序线性表的实现就是有数组来实现的

技术分享

 

顺序线性表的插入与删除

插入:有几种情况

第一种:线性表已经满了,插队失败

技术分享

第二种:插入位置不存在,插入失败

技术分享

第三种:插在最后,直接到后面站队去

技术分享

 

第四种:想插在中间,会麻烦后面的人都得向后移

技术分享

线性表的删除:

1.就是看看先删除的第几个数是不是存在

2.存在的,将该元素后面的元素向前移动就行,和在中间插入时的操作相反;

 

自己实现ArrayList线性表,只是线性表的基本操作---插入,删除,查看,获取元素

package com.neuedu.entity;

import java.util.ArrayList;
import java.util.LinkedList;

/* 
* 项目名称:JavaSqList 
* @author:wzc
* @date 创建时间:2017年9月1日 下午11:08:03
* @Description:自定义List类
* @parameter  
*   */
public class MyList {
	private static final int MAXSUM=20;
	private  int [] date=new int[MAXSUM];
	private  int length;
	
	public MyList() {
		super();
		length=0;
	}
	//获取线性表长度
	public int getLength() {
		return length;
	}
	//判断线性表是否为空
	public boolean isEmpty(){
		if (length==0) {
			return true;
		}
		else {
			return  false;
		}
	}
	//获取线性表的第i个数据
	public  int getIndex(int index){
		//1.判断索引下标是否合法
		if (index<0||index>length) {
			return -1;
		}
		//将索引值所对应的数据取出
		int result=date[index-1];
		return result;
	}
	//向线性表中插入数据,参数:插入的数据,插入的位置
	public  void InsertList(int  num,int  index){
		//1.判断线性表是否已经满了
		if (length==MAXSUM) {
			System.out.println("线性表已经满了");
			return;
		}else if (index<0||index>length+1) {//.判断插入位置是否合法
			System.out.println("插入位置不合法");
			return;
		}else if(index<=length){//插入的位置不是最后一个
			for(int k=length-1;k>=index-1;k--){
				date[k+1]=date[k];
			}
			
		}
		date[index-1]=num;
		length++;
		System.out.println("插入成功");
	}
	//将线性表中的数据输出
	public  void  toStringMylist(){
		if (!isEmpty()) {
			 for (int i=0;i<length;i++) {
				System.out.print(date[i]+" ");	
			 }
			 System.out.println();
		}else {
			System.out.println("null");
		}
	}
	//判断一个数据是否在线性表中,若在返回在第几个位置
	public int indexOf(int num){
			for (int i=0;i<length;i++) {
			   if (date[i]==num) {
				   return i+1;
			   }
            }
		return -1;
	}
	//删除数据表中的第i个数据
	public void deleteNum(int index){
		if (length==0) {
			System.out.println("list为空");
			return;
		}else if (index<0||index>=length) {
			System.out.println("下标越界");
			return;
		}else {
			int num=date[index-1];
			for(int k=index;k<length;k++){
				date[k-1]=date[k];
			}
			length--;
			System.out.println(num+"已经删除");
		}
	}
	
	
	

	
}

 

大话数据结构---顺序存储结构的线性表

标签:void   http   null   string   顺序存储   ++   线性表的基本操作   朋友   长度   

原文地址:http://www.cnblogs.com/Actexpler-S/p/7468144.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!