java顺序表的实现

class sequenceList<T>{
 final int maxSize=10;
 private T[] listArray;
 private int length;
 //顺序表的初始化
 public sequenceList(){
	 length=0;
     listArray= (T[]) new Object[maxSize] ;
}
 public sequenceList(int n){
     if(n<=0){
        System.out.println("error");
        System.exit(1);
     }
     length=0;
     listArray=(T[]) new Object[n];
 }
 //顺序表的插入
public boolean add(T obj,int pos){
	if(pos<1||pos>length+1){
		System.out.println("pos值不合法");
		return false;
	}
	if(length==listArray.length){
		T[] p=(T[])new Object[length*2];
		for(int i=0;i<length;i++)
			p[i]=listArray[i];
		listArray=p;
	}
	for(int i=length;i>=pos;i--)
		listArray[i]=listArray[i-1];
	listArray[pos-1]=obj;
	length++;
	return true;
}
 //顺序表的删除
public T remove(int pos){
	if(isEmpty()){
		System.out .println("顺序表为空,无法执行删除操作");
		return null;
	}else {
		if (pos<1||pos>length) {
		System.out.println("pos值不合法") ;
		return null ;
		}
		T x=listArray[pos-1];
		for(int i=pos; i<=length;i++)
		listArray[i-1]=listArray[i];
		length--;
		return x;
	}
}
 //顺序表的查找
public int find(T obj){
	if(isEmpty()){
		System. out.println("顺序表为空");
		return -1 ;
    }else{
		for (int i=0;i<length;i++){
			if(listArray[i].equals(obj))
			  return i+1;
		}
		return 1;
    }		
}
 //顺序表的获取元素
public T value(int pos){
	if(isEmpty()){
		System.out.println("顺序表为空");
		return null;
	}else{
		if(pos<1||pos>length){
		System.out.println("pos值不合法");
		return null;
		}
		return listArray[pos-1];
	}
}
 //顺序表的更新元素
public boolean modify(T obj,int pos){
	if(isEmpty()){
		System.out.println("顺序表为空");
		return false;
	}else{
		if(pos<1||pos>length){
		System.out.println("error");
		return false;
		}
		listArray[pos-1]=obj;
		return true;
	}
}
 //顺序表的判空
public boolean isEmpty(){
	return length==0;
}
 //顺序表的长度
public int size(){
	return length;
}
 //顺序表的正序输出
public void nextOrder(){
	for(int i=0;i<length;i++)
		System.out.println(listArray[i]);
}
 //顺序表的清空
public void clear(){
	length=0;
}
}
public class FileTackling{
	public static void main(String[] args){
		sequenceList<Integer> L=new sequenceList<Integer>();
		int status,e,i;
	     int []a={23,56,12,49, 35};
	     for(i=0;i<a.length;i++)
	      L.add(a[i],i+1);
	      System.out.println("执行插人操作后顺序表中的数据元素为: ");
	      L.nextOrder();
	      e=L.remove(5);
	      System.out.println("执行删除操作后顺序表中的数据元素为: ");
	      L.nextOrder();
	      i=L.find(12);  
	      System.out.println("元素12在线性表中的位序为:"+i);
	}
}

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
首先,我们需要定义通讯录的联系人实体类: ```java public class Contact { private String name; private String phoneNumber; private String email; public Contact(String name, String phoneNumber, String email) { this.name = name; this.phoneNumber = phoneNumber; this.email = email; } public String getName() { return name; } public String getPhoneNumber() { return phoneNumber; } public String getEmail() { return email; } @Override public String toString() { return "Name: " + name + ", Phone number: " + phoneNumber + ", Email: " + email; } } ``` 接下来,我们需要实现顺序表类: ```java public class ContactList { private Contact[] contacts; private int size; public ContactList(int capacity) { contacts = new Contact[capacity]; size = 0; } public int getSize() { return size; } public void addContact(Contact contact) { if (size == contacts.length) { throw new RuntimeException("Contact list is full"); } contacts[size++] = contact; } public Contact getContact(int index) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } return contacts[index]; } public void removeContact(int index) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } for (int i = index; i < size - 1; i++) { contacts[i] = contacts[i + 1]; } contacts[size - 1] = null; size--; } public void updateContact(int index, Contact contact) { if (index < 0 || index >= size) { throw new RuntimeException("Invalid index"); } contacts[index] = contact; } public Contact[] getAllContacts() { Contact[] result = new Contact[size]; for (int i = 0; i < size; i++) { result[i] = contacts[i]; } return result; } } ``` 然后,我们可以在主函数使用顺序表类来实现通讯录: ```java public static void main(String[] args) { ContactList contactList = new ContactList(10); contactList.addContact(new Contact("Alice", "1234567890", "alice@example.com")); contactList.addContact(new Contact("Bob", "2345678901", "bob@example.com")); contactList.addContact(new Contact("Charlie", "3456789012", "charlie@example.com")); contactList.removeContact(1); contactList.updateContact(0, new Contact("Alice", "0987654321", "alice@example.com")); Contact[] contacts = contactList.getAllContacts(); for (Contact contact : contacts) { System.out.println(contact); } } ``` 输出结果: ``` Name: Alice, Phone number: 0987654321, Email: alice@example.com Name: Charlie, Phone number: 3456789012, Email: charlie@example.com ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夏小泡泡#

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值