之前在学习线性表一章的时候,有些地方都是比较含糊的带过,只是把一些比较难理解的地方花了好长时间才明白。。。。然后写出代码,存在博客上面。从今天开始,将重新把数据结构这本书走一遍,用C和Java两种语言,尽量把每个部分都可以用代码实现一遍,使印象更加深刻,也算是重新学习一下C语言啦~~。而且现在新学期开始学Oracle啦,也会把一些学习过程中的代码以及重点难点记录下来,希望大家会关注哦~~
线性表的概念都在之前的文章有提到,今天来说一下有关线性表的具体操作(数组实现),分为以下几个部分
1.ListMakeEmpty()建立空表
2.ElementTypeFindK(int *k , List L)根据位序 K 返回相应元素。
3.int Find(ElementType X,List L)线性表中查找 X 第一次出现的位置
4.void Insert(ElementType X,int i,List L)在位序 i 之前插入一个元素 X
5.void Delete(ElementType X,int i, List L)删除
Java篇:
/** * 有关线性表的操作 * * @author DY1201zhangshuyou * * 1.查找X的第一次出现的位置 * 2.根据位序返回相应的元素 * 3.Insert * 4.Delete */ public class ListTestDemo01 { private int A[]; private int nElem; public ListTestDemo01(int maxSize) { A = new int[maxSize]; nElem = A.length; } /** * 查找X的第一次出现的位置 */ public int Find(int X, int[] A) { int i = 0; for (; i <= A.length; i++) { if (i <= A.length && A[i] == X) { return i; } } return -1; } /** *根据位序返回相应的元素 */ public int FindElem(int elem , int[] A){ for(int i = 0; i <= A.length; i++){ while(i == elem){ return A[i - 1]; } } return 0; } /** * Insert:把X插入第i个位置,就应该把i - 1后面的元素全部向后移动,并使数组的长度加1 * @param i * @param A */ public void Insert(int X ,int i , int[] A){ int j; if(i == A.length){ //表空间已满,不能插入 System.out.println("数组已满"); return; //return表示中止当前函数的运行,并将操作权返回给调用者。 } if(i < 1 && i > A.length + 1){ //检查插入位置的合理性 System.out.println("位置不合法"); return; } for(j = A.length - 1;j > i -1; j--) A[j] = A[j - 1]; A[i] = X; return; } /** * Delete:删除指定位置i的元素 * @param i * @param A */ public void Delete(int i , int[] A){ int j; if(i > A.length || i < 1){ System.out.println("超出数组的长度"); } else{ for(j = i;j < A.length -1 ;j++){ A[j] = A[j + 1]; } } } public void display() { for (int i = 0; i < nElem; i++) { System.out.println(A[i]); } } public static void main(String args[]) { ListTestDemo01 test = new ListTestDemo01(7); int[] A = new int[] { 10, 12, 21, 3, 4, 5, 6 }; test.Insert(7, 2, A); System.err.println(test.FindElem(1, A)); System.err.println(test.FindElem(4, A)); System.out.println(test.Find(21, A)); System.out.println(); test.Delete(2, A); for(int i = 0;i < A.length - 1;i++){ System.out.print(A[i] + " "); } } }
C语言篇:
稍后放上C语言代码。。稍安勿躁咯~
时间: 2024-10-02 23:30:53