顺序表就是按照顺序存储方式的线性表
/** * @PackageName:com.wcy.xianchen.shujujiegou * Description 顺序表的定义,操作 * @date:2022/7/28 */ public class SequenceTable { public static void main(String[] args){ int i; //定义顺序表变量 SLType SL = new SLType(); DATA pdata; String key; System.out.println("顺序表操作演示"); //初始化顺序表 SL.SLInit(SL); Scanner input = new Scanner(System.in); do { System.out.println("输入添加的学号,姓名,年龄"); DATA data = new DATA(); data.key = input.next(); data.name = input.next(); data.age = input.nextInt(); SL.SLAdd(SL,data); if (data.age == 0){ break; }else { continue; } }while (true); System.out.println("顺序表中的节点顺序为"); SL.SLAll(SL); System.out.println("要取出节点的序号"); i = input.nextInt(); pdata = SL.findByNum(SL,i); if (pdata != null){ System.out.println("第"+i+"节点数据"+pdata.key+pdata.name+pdata.age); } System.out.println("根据节点关键字查找"); key = input.next(); i = SL.SLFintByCont(SL,key); pdata = SL.findByNum(SL,i); if (pdata != null){ System.out.println("第"+i+"节点数据"+pdata.key+pdata.name+pdata.age); } } } class DATA{ //节点关键字 String key; String name; int age; public DATA() { } public String getKey() { return key; } public void setKey(String key) { this.key = key; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } } /** * 定义顺序表结构 */ class SLType{ public SLType() { } static final int MAXLEN=100; //保存顺序表的结构数组 DATA[] listData = new DATA[MAXLEN+1]; //顺序表已经存储节点的数量 int listLen; /** * 初始化线性表 * @param SL */ 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){ return 0; } if (n<1 || n > SL.listLen-1){ return 0; } //将顺序表中的数据向后移动 for (i=SL.listLen;i>=n;i--){ SL.listData[i+1] = SL.listData[i]; } //插入节点 SL.listData[n]=data; SL.listLen++; return 1; } /** * 添加元素到表尾部 * @param SL * @param data * @return */ int SLAdd(SLType SL,DATA data){ if (SL.listLen>= MAXLEN){ return 0; } SL.listData[++SL.listLen]=data; return 1; } /** * 删除节点元素 * @param SL * @param n * @return */ int SLDelete(SLType SL,int n){ int i; if (n<1 || n> SL.listLen+1){ return 0; } //顺序表向前移动 for (i=n;i< SL.listLen;i++){ SL.listData[i] = SL.listData[i+1]; } SL.listLen--; return 1; } /** * 根据序号返回元素 * @param SL * @param n * @return */ DATA findByNum(SLType SL,int n){ if (n<1 || n> SL.listLen+1){ return null; } return SL.listData[n]; } /** * 按照关键字查找节点 * @param SL * @param key * @return */ int SLFintByCont(SLType SL,String key){ int i; for ( i=1;i
总结:通过理解理论,加上代码实践,将掌握如何操作和定义顺序表