线性表
程序员文章站
2022-07-10 19:42:16
...
以前写博客,为了增加关注度,现在呢?写给自己
线性表是一种典型的线性结构,是最简单、最常用的数据结构,比如栈、队列都可以说是线性表.
逻辑结构:
由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; } }
.....
测试结果:
以前老是看不懂,明明知道数据结构是基础,很重要的,今天突然就明白了,呵.