线性表

 大笑以前写博客,为了增加关注度,现在呢?写给自己

 线性表是一种典型的线性结构,是最简单、最常用的数据结构,比如栈、队列都可以说是线性表.

 逻辑结构:

  由n个数据元素构成,对于非空的来说,有且只有一个开始结点,有且只有一个尾巴结点,内部结点有且只有一个直接前驱,和一个直接后驱。同一个线性表内部的数据元素的类型相同,每个元素的数据元素相同

 数据操作:

 初始化、计算表长、获取结点、查找结点、插入结点、删除结点

 存储:

 1.顺序存储:

 构造数据元素:

 

public class DATA {

	String key;//结点的关键字
	String name;
	int age;
}

 

 构造线性表:

 

/**
 * 主要用于定义顺序表结构
 * @author Administrator
 *
 */
public class SLType {

	static final int MAXLEN=100;
	DATA[] ListData =new DATA[MAXLEN+1];//定义顺序表的结构数组
	int ListLen;//顺序表已存结点的数量
	
	void SLInit(SLType SL){ //初始化顺序表
		SL.ListLen=0;//初始化为空表
	}
	
	int SLLength(SLType SL){
		return (SL.ListLen); //返回顺序表的元素数量
	}
	
	int SLInsert(SLType SL,int n,DATA data){
		int i;
		if(SL.ListLen>=MAXLEN){
			System.out.print("顺序表已满,不能插入结点!\n");
			return 0;
		}
		if(n<1||n>SL.ListLen-1){//插入结点序号不正确
			System.out.print("插入元素序号错误,不能插入元素!\n");
			return 0;
		}
		for(i=SL.ListLen;i>=n;i--){
			SL.ListData[i+1]=SL.ListData[i];
		}
		SL.ListData[n]=data;
		SL.ListLen++;
		return 1;
	}
	
	
	int SLAdd(SLType SL,DATA data){//增加元素到顺序表的尾部
		if(SL.ListLen>=MAXLEN){ //顺序表已经满了
		   System.out.println("顺序表已满,不能在加结点了");	
		   return 0;
		}
		SL.ListData[++SL.ListLen]=data;
		return 1;
	}
	
	int SLDelete(SLType SL,int n){ //删除顺序表中的数据元素
		int i;
		if(n<1||n>SL.ListLen+1){
			System.out.println("删除结点序号错误,不能删除成功!\n");
		    return 0;
		}
		for(i=n;i<SL.ListLen;i++){
			SL.ListData[i]=SL.ListData[i+1];
		}
		  SL.ListLen--;
		return 1;
	}
	
	DATA SLFindByNum(SLType SL,int n){
		if(n<1||n>SL.ListLen+1){
			System.out.println("结点序号错误,不能返回结点!\n");
		    return null;
		}
		return SL.ListData[n];
	}
	
	int SLFindByCount(SLType SL,String key){
		int i;
		for(i=1;i<=SL.ListLen;i++){
			if(SL.ListData[i].key.compareTo(key)==0){
				return i;
			}
		}
		       return 0;
	}
	
	int SLALL(SLType SL){ //显示顺序表中的所有结点
		int i;
		for(i=1;i<=SL.ListLen;i++){
			System.out.print("{"+SL.ListData[i].key+","+
			SL.ListData[i].name+","+SL.ListData[i].age+"}");
			
		}
		return 0;
		
	}
	
}

 .....

 测试结果:

 

 以前老是看不懂,明明知道数据结构是基础,很重要的,今天突然就明白了,呵.
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值