线性表的简单实现

来源:互联网 发布:开淘宝店需要什么费用 编辑:程序博客网 时间:2024/05/02 02:24
用Java写的一个线性表的简单实现
1、接口设计
Java代码 复制代码 收藏代码
  1. package linearTable;
  2. /**
  3. * 线性表的接口设计
  4. * @author fox
  5. *
  6. */
  7. public interface LinearList {
  8. public boolean isEmpty();
  9. public int size();
  10. public Object get(int index);
  11. public void set(int index,Object e);
  12. public boolean add(int index, Object o);
  13. public boolean add(Object o);
  14. public Object remove(int index);
  15. public void clear();
  16. }

2、实现类
Java代码 复制代码 收藏代码
  1. package linearTable;
  2. /**
  3. * 线性表的实现
  4. * @author fox
  5. *
  6. */
  7. public class LinearListImpleimplements LinearList {
  8. private Object[] slist;
  9. private int size;
  10. public LinearListImple() {
  11. this(10);
  12. }
  13. public LinearListImple(int length) {
  14. if(length == 0) {
  15. this.slist = new Object[10];
  16. }
  17. this.slist = new Object[length];
  18. }
  19. public boolean isEmpty() {
  20. if(size == 0) {
  21. return true;
  22. } else {
  23. return false;
  24. }
  25. }
  26. public int size() {
  27. return size;
  28. }
  29. public Object get(int index) {
  30. return (Object)slist[index];
  31. }
  32. public void set(int index, Object o) {
  33. checkIndex(index);
  34. slist[index] = o;
  35. }
  36. public boolean add(int index, Object o) {
  37. checkIndex(index);
  38. if(size == slist.length) {
  39. Object[] temp = slist;
  40. this.slist = new Object[temp.length *2];
  41. for(int j = 0; j < temp.length; j++) {
  42. this.slist[j] = temp[j];
  43. }
  44. }
  45. for(int i = size - 1; i >= index; i--) {
  46. slist[i+1] = slist[i];
  47. }
  48. slist[index] = o;
  49. size++;
  50. return true;
  51. }
  52. public boolean add(Object o) {
  53. return add(size,o);
  54. }
  55. public Object remove(int index) {
  56. checkIndex(index);
  57. Object temp = (Object)slist[index];
  58. for(int i = index; i <= size -2; i++) {
  59. slist[i] = slist[i+1];
  60. }
  61. slist[size - 1] = null;
  62. size--;
  63. return temp;
  64. }
  65. public void clear() {
  66. if(size != 0) {
  67. for(int i = 0; i < size; i++) {
  68. slist[i] = null;
  69. }
  70. size = 0;
  71. }
  72. }
  73. private void checkIndex(int index) {
  74. if(index > size || index < 0) {
  75. throw new IndexOutOfBoundsException("下标超出当前线性表长度!"+size);
  76. }
  77. }
  78. }

个中不足,望大家指出。 
原创粉丝点击