Java数据结构--线性表
来源:互联网 发布:加密软件 dg 编辑:程序博客网 时间:2024/05/17 03:16
import java.util.Scanner;class DATA{ String key; //结点的关键字 String name; int age;} 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; //返回0表示插入不成功 } if(n<1 || n>SL.ListLen-1) //插入结点序号不正确 { System.out.print("插入元素序号错误,不能插入元素!\n"); return 0; //返回0,表示插入不成功 } for(i=SL.ListLen;i>=n;i--) //将顺序表中的数据向后移动 { SL.ListData[i+1]=SL.ListData[i]; } SL.ListData[n]=data; //插入结点 SL.ListLen++; //顺序表结点数量增加1 return 1; //成功插入,返回1 } int SLAdd(SLType SL,DATA data) //增加元素到顺序表尾部 { if(SL.ListLen>=MAXLEN) //顺序表已满 { System.out.print("顺序表已满,不能再添加结点了!\n"); 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.print("删除结点序号错误,不能删除结点!\n"); return 0; //删除不成功,返回0 } for(i=n;i<SL.ListLen;i++) //将顺序表中的数据向前移动 { SL.ListData[i]=SL.ListData[i+1]; } SL.ListLen--; //顺序表元素数量减1 return 1; //成功删除,返回1 } DATA SLFindByNum(SLType SL,int n) //根据序号返回数据元素 { if(n<1 || n>SL.ListLen+1) //元素序号不正确 { System.out.print("结点序号错误,不能返回结点!\n"); return null; //不成功,则返回0 } return SL.ListData[n]; } int SLFindByCont(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; //搜索整个表后仍没有找到,则返回0 } int SLAll(SLType SL) //显示顺序表中的所有结点 { int i; for(i=1;i<=SL.ListLen;i++) { System.out.printf("(%s,%s,%d)\n",SL.ListData[i].key,SL.ListData[i].name,SL.ListData[i].age); } return 0; }}public class P2_1 { public static void main(String[] args) { int i; SLType SL=new SLType(); //定义顺序表变量 // DATA data=new DATA(); //定义结点保存数据类型变量 DATA pdata; //定义结点保存指针变量 String key; //保存关键字 System.out.print("顺序表操作演示!\n"); SL.SLInit(SL); //初始化顺序表 System.out.print("初始化顺序表完成!\n"); Scanner input=new Scanner(System.in); do { //循环添加结点数据 System.out.print("输入添加的结点(学号 姓名 年龄):"); DATA data=new DATA(); data.key=input.next(); data.name=input.next(); data.age=input.nextInt(); if(data.age!=0) //若年龄不为0 { if(SL.SLAdd(SL,data)==0) //若添加结点失败 { break; //退出死循环 } } else //若年龄为0 { break; //退出死循环 } }while(true); System.out.print("\n顺序表中的结点顺序为:\n"); SL.SLAll(SL); //显示所有结点数据 System.out.print("\n要取出结点的序号:"); i=input.nextInt(); //输入结占点序号 pdata=SL.SLFindByNum(SL,i); //按序号查找结点 if(pdata!=null) //若返回的结点指针不为NULL { System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age); } System.out.print("\n要查找结点的关键字:"); key=input.next(); //输入关键字 i=SL.SLFindByCont(SL,key); //按关键字查找 ,返回结点序号 pdata=SL.SLFindByNum(SL,i); //按序号查询,返回结点指针 if(pdata!=null) //若结点指针不为NULL { System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age); } }}
0 0
- 【Java数据结构】线性表
- Java数据结构--线性表
- 数据结构 线性表JAVA实现
- 数据结构-线性表-JAVA描述
- 数据结构-Java实现线性表
- 数据结构(Java)--线性表
- Java数据结构之线性表
- 数据结构(Java)---线性表
- Java 数据结构_线性表
- <基于Java数据结构>线性表
- Java数据结构-线性表(顺序表)
- 数据结构Java 线性表与顺序表
- Java,数据结构,线性表,顺序实现
- java数据结构 线性表,链表,哈希表
- java数据结构:线性表之数组实现
- java数据结构之线性表代码实现
- 数据结构java版之线性表,栈
- Java数据结构-线性表之单链表LinkedList
- Linux文件系统管理(一)
- SpringMVC 修炼手册 part3 控制器拦截与请求参数
- (0)FPGA自学之路-笔记0
- qqqqq
- typedef void (*pFunction)(void);
- Java数据结构--线性表
- 实现一个嵌套数组的迭代器
- a标签的带参传值和form表单的带参
- 最简单的走马灯实现
- MapReduce多种输入格式
- Java Web项目中解决中文乱码方法总结
- ThinkPHP+predis 环境配置
- Linux文件系统管理(二)
- xml全解析