数据结构-->线性表
来源:互联网 发布:radeon pro 580windows 编辑:程序博客网 时间:2024/05/23 18:31
package 线性表;
import java.util.Scanner;
class DATA {
/* 定义节点 */
String key;// 关键字
String name;
int age;
}
public class Linelist {
/* 定义顺序表的结构 */static final int MAXINT = 100;// 顺序表的最大长度DATA[] data = new DATA[MAXINT + 1];// 保存顺序表的结构数组int ListLen;// 顺序表已存节点的数量/* 初始化顺序表 */public void ListInit(Linelist list) { list.ListLen = 0;}/* 返回顺序表的元素数量 */public int Listnum(Linelist list) { return (list.ListLen);}/* 顺序表的插入 */public int lineInsert(Linelist list, int n, DATA data0) { int i; if (list.ListLen >= MAXINT) {// 顺序表节点数量已经超过最大数量 System.out.println("顺序表已满,不能插入"); return 0;// 返回0表示插入失败 } if (n < 1 || n > MAXINT + 1) {// 如果插入的节点序号不正确 System.out.println("插入的节点不正确,不能插入元素"); return 0; } for (i = list.ListLen; i >= n; i--) { list.data[i + 1] = list.data[i];// 将顺序表中的节点向后移动 } list.data[n] = data0;// 插入节点 list.ListLen++;// 顺序表中节点数量加1 return 1;// 插入成功返回1}/* 添加元素到顺序表尾部 */public int listAdd(Linelist list, DATA data0) { if (list.ListLen >= MAXINT) { System.out.println("顺序表已满,不能再添加元素了"); return 0;// 添加节点失败 } list.data[++list.ListLen] = data0; return 1;}/* 删除顺序表中的元素 */public int listDelete(Linelist list, int n) { int i; if (n < 1 || n > list.ListLen + 1) { System.out.println("删除节点序号不正确,请从新输入"); return 0; } for (i = list.ListLen; i >= n; i--) { list.data[i] = list.data[i + 1];// 元素向前移动 } list.ListLen--; return 1;// 删除成功}/* 根据序号返回返回数据元素 */DATA findByNum(Linelist list, int n) { if (n < 1 || n > list.ListLen + 1) { System.out.println("节点序号错误,不能返回节点"); return null; } return list.data[n];}/* 按关键字查询节点 */public int findkey(Linelist list, String key) { int i; for (i = 1; i <= list.ListLen; i++) { if (list.data[i].key.compareTo(key) == 0) {// 如果照到所需要的节点 return i;// 返回节点序号 } } return 0;}/* 显示顺序表中的所有节点 */public int listAll(Linelist list) { int i; for (i = 1; i <= list.ListLen; i++) { System.out.printf(("%s,%s,%d"), list.data[i].key, list.data[i].name, list.data[i].age); } return 0;}public static void main(String[] args) { int i; Linelist list = new Linelist();// 定义顺序表变量 DATA pdata;// 定义节点,保存引用变量 String key;// 保存关键字 System.out.println("顺序表操作演示"); list.ListInit(list);// 初始化线性表 System.out.println("初始化线性表完成"); Scanner sc = new Scanner(System.in); do { // 循环添加节点数据 System.out.println("输入添加的节点:(学号,姓名,年龄):"); DATA data = new DATA(); data.key = sc.next(); data.name = sc.next(); data.age = sc.nextInt(); // 如果年龄不为0 if (data.age != 0) { if (list.listAdd(list, data) == 0) {// 若添加节点失败 break; } } else { // 若年龄为0 break; } } while (true); System.out.println("要取出的节点序号"); i = sc.nextInt(); pdata = list.findByNum(list, i); if (pdata != null) { // 若返回的节点引用不为空 System.out.printf("第%d个节点为(%s,%s,%d)", i, pdata.key, pdata.name, pdata.age); } System.out.println("要查找节点的关键字:"); key = sc.next(); i = list.findkey(list, key);// 按关键字查找返回关键字 pdata = list.findByNum(list, i);// 按序号查询,返回节点引用 if (pdata != null) {// 若节点引用不为空 System.out.printf("第%d个节点为:(%s,%s,%d)", i, pdata.key, pdata.name, pdata.age); }}
}
阅读全文
0 0
- 数据结构拾遗---线性表
- 整理--数据结构--线性表
- 数据结构(线性表)
- 整理--数据结构--线性表
- 数据结构--顺序线性表
- 数据结构之线性表
- 数据结构-线性链表
- 数据结构-线性表
- 复习 [数据结构] ---- 线性表
- 数据结构---线性表
- 数据结构复习-线性表
- 数据结构之线性表
- 数据结构之线性表
- 线性链表---数据结构
- 数据结构—线性表
- 数据结构 线性表
- 数据结构----线性表
- 数据结构之线性表
- 在主方法中创建map集合中存储3个学生对象.key使用字符串表示编号(不能重复)value是学生对象。然后调用以下两个方法;
- Struts2_获取servletAPI
- Servlet
- c++ 大小写转换&&字符转数字
- Docker入门
- 数据结构-->线性表
- 剑指offer——面试案例
- 使用cProfile分析Python程序性能
- JVM参数含义
- 每天一点mysql-SQL的约束
- 移动开发----平板电脑或者小屏幕设备
- 剑指offer——新增面试题
- BZOJ 1087-互不侵犯King(状压DP)
- 算法作业:证明题(2)-- 8.8