之前在学习线性表一章的时候,有些地方都是比较含糊的带过,只是把一些比较难理解的地方花了好长时间才明白。。。。然后写出代码,存在博客上面。从今天开始,将重新把数据结构这本书走一遍,用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语言代码。。稍安勿躁咯~