用java写顺序表
来源:互联网 发布:uvz转pdf软件 编辑:程序博客网 时间:2024/05/16 09:00
import java.util.Scanner;//顺序表操作class DATA{ //定义结点内容String key;String name;int age;}class SLType{ //定义顺序表结构static final int MAXLEN=100;DATA[] ListData=new DATA[MAXLEN];//保存顺序表的结构数组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(SL.ListLen-1<n&&n<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.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;}for(i=n;i<SL.ListLen;i++) { //将顺序表中数据往前移动SL.ListData[i]=SL.ListData[1+i];}SL.ListLen--;return 1;}DATA SLFindByNum(SLType SL,int n) { //根据序号返回数据元素if(n<1||n>SL.ListLen+1) { //判断元素序号是否合法System.out.print("结点序号错误,不能返回结点!\n");return null;}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;}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 Practise {public static void main(String[] args) {int i;SLType SL=new SLType();//定义顺序表变量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){if(SL.SLAdd(SL, data)==0) {//若添加结点失败break;}}else {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) {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) {System.out.printf("第%d个结点为:(%s,%s,%d)\n",i,pdata.key,pdata.name,pdata.age);}}}
输出范例如下:
顺序表操作演示!初始化顺序表完成!输入添加的结点(学号 姓名 年龄):001 aa 19输入添加的结点(学号 姓名 年龄):002 bb 20输入添加的结点(学号 姓名 年龄):003 cc 21输入添加的结点(学号 姓名 年龄):004 dd 22输入添加的结点(学号 姓名 年龄):0 0 0顺序表中节点顺序为:(001,aa,19)(002,bb,20)(003,cc,21)(004,dd,22)要取出结点序号为:1第1个结点为:(001,aa,19)要查找的结点的关键字:002第2个结点为:(002,bb,20)
阅读全文
0 0
- 用java写顺序表
- 自己写的顺序表
- 用JAVA实现顺序表
- 用c写的线性表的顺序实现
- 用c++写一个顺序表的简单操作程序
- 用C写一个顺序表的简单操作
- 用C语言写的一个顺序表
- 自学写的一个顺序表
- Java IO之写入流关闭关闭顺序
- 用Java实现的顺序链表
- java模仿顺序表
- 顺序表----java实现
- java实现顺序表
- JAVA实现顺序表
- JAVA数据结构---顺序表
- JAVA之顺序表
- 顺序表java实现
- Java实现顺序表
- Lisp发展史(简要)
- 度娘所阐述的企业信息化概念和这个行业的未来
- 2、js基础:垃圾收集
- springmvc提交表单日期用Date接收
- Windows快速批量删除大量文件的命令
- 用java写顺序表
- 对于Verilog语言的一些总结
- vue2.0之父子组件通信的理解
- java设计模式之适配器模式
- 学习java用到的开发工具
- ajax请求
- MATLAB基本三维绘图命令
- 5秒钟跳转页面
- 【学习摘记】马士兵HTML & CSS_课时7_Dreamweaver——设计图形转换器,只要你敢试,就没问题