码迷,mamicode.com
首页 > 编程语言 > 详细

详谈线性表的有关操作(Java、C两种语言)

时间:2015-03-15 15:22:51      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:数据结构   java   c语言   

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

      

   

   

详谈线性表的有关操作(Java、C两种语言)

标签:数据结构   java   c语言   

原文地址:http://blog.csdn.net/qq_21394609/article/details/44276463

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!