上机实验报告
实验1: 线性表
实验内容说明(实验目的和内容):采用顺序表和链表实现通讯录储存,并使用文件写入和读取通信录数据
程序设计说明(程序功能、设计思路、算法说明):通过对话框读取姓名和电话,
并将其储存在单链表或顺序表中,创建一个文件,将储存在表中的姓名和电话写入文件,同时测试从文件中读取数据。使用一个for循环读取输入的信息,并储存,再用一个for循将信息写入文件,利用一个while循环从文件中读取数据
程序源码及详细注释:
(1)顺序表实现储存写入
package experimentLast; //该实验放在experimentLast下
import java.io.*;
import java.util.Scanner;
import ch02.SqList; //导入SqList,创建一个链表
import javax.swing.JOptionPane;
public class AddressBookOfSqList{
public static void main(String[] args) throws Exception{
SqList nameList = new SqList(10); // 创建一个链表,用于储存名字 SqList phoneList = new SqList(10); // 创建一个链表,用于储存电话话号码
JOptionPane.showMessageDialog( null,
"请输入十个人姓名和电话号码","读数据",
JOptionPane.PLAIN_MESSAGE ); // 对话框提示输入请输入十个人姓名和电话号码
for(int i=0;i<10;i++) // 使用一个循环将输入的数据插入链表
{
String name= JOptionPane.showInputDialog( "请输入第 "+(i+1)+" 人"+(i+1)+" 人的名字" ); // 对话框提示输入请输入姓名
// 将输入的姓名插入姓名链表中储存
"+name+" 的电话号码" );
phoneList.insert(i,phoneNumber); //对话框提示输入请输入电话号码
}
nameList.insert(i,name); String phoneNumber= JOptionPane.showInputDialog( "请输入
File file=new File("D:/data.txt");
//将数组写入文件中 PrintWriter output=new PrintWriter(file); for(int j=0;j<2;j++){ output.print(nameList.get(j)+": "); output.print(phoneList.get(j)+" \n"); output.close(); } Scanner input=new Scanner(file); StringBuffer buf = new StringBuffer() ; while(input.hasNext()) { } JOptionPane.showMessageDialog(null, buf); String a =input.next(); buf.append(a) ; buf.append("\n") ;
(2)单链表实现
package experimentLast; //该实验放在experimentLast下
import ch02.LinkList; //导入LinkList,创建一个链表
import java.io.*;
import java.util.Scanner;
import javax.swing.JOptionPane;
public class AddressBookOfLinkLisk {
public static void main(String[] args) throws Exception{
int LinkList nameList= new LinkList(); // 创建一个链表,用于储存名字
LinkList phoneList= new LinkList(); // 创建一个链表,用于储存电话号码
JOptionPane.showMessageDialog( null,
"请输入十个人姓名和电话号码","读数据",
JOptionPane.PLAIN_MESSAGE ); // 对话框提示输入请输入十个人姓名和电话号码 for(int i=0;i<10;i++) // 使用一个循环将输入的数据插入链表
{
String name= JOptionPane.showInputDialog( "请输入第"+(i+1)+"人得名字" ); // 对话框提示输入请输入姓名
nameList.insert(i,name); // 将输入的姓名插入姓名链表中储存
String phoneNumber= JOptionPane.showInputDialog( "请输入"+name+"得电话号码" ); //对话框提示输入请输入电话号码
// 将输入的电话插入电话链表中储存
phoneList.insert(i,phoneNumber);
}
File file=new File("D:/data.txt"); // 创建一个文件
//将链表信息写入文件
PrintWriter output=new PrintWriter(file);
for(int j=0;j<10;j++){
}
output.close(); // 关闭写入
//读取文件的信息
Scanner input=new Scanner(file);
StringBuffer buf = new StringBuffer() ; output.print(nameList.get(j).toString()+": "); output.print(phoneList.get(j).toString()+" \n");
while(input.hasNext()) { // 利用一个循环将读取信息
}
JOptionPane.showMessageDialog(null, buf); // 对话框输出内容 }
}
}
}
buf.append(a) ; buf.append("\n") ; String a =input.next();
测试数据、测试结果(结果截图)及结果分析:
输入十个人的姓名和电话号码
完成输入姓名和电话号码后,将信息写入文件
读取文件的信息,并通过对话框显示
问题及心得
通过利用顺序表和单链表储存信息,并将其写入文件,更进一步了解熟悉两种线性表储存方式的特点,线性表储存是暂时的,当程序关闭后数据会消失,所以要通过写入文件的方式长期储存,通过本实验,了解的线性表在生活中的运用。
第二篇:数据结构 实验一:线性表
《数据结构》实验报告
专业班级:信计082 学生姓名: 学号:
实验日期: 6.8 指导老师: