数据结构_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > 数据结构

数据结构

 2013/11/30 12:19:02  wuyongzheng  程序员俱乐部  我要评论(0)
  • 摘要:现在我大二了,学校里面开的数据结构我们已经学习了半个多学期了。在我看来,数据结构这东西其实是非常重要的,他会告诉你什么时候用什么算法,用那种思想考虑问题,会是你的代码有大幅度的提升。并且还有一个更重要的认识便是,对于数据结构而言,无论是那种语言,都是通用的。那就让我先概括的介绍一下基本数据结构吧。数据结构包含线性表、栈、队列、二叉树、树这几种基本的结构。一:线性表、栈、队列在我学的这本数据结构书上,将这三种基本结构放在了一章上面了,其实并不是因为这三种不重要或者是简单
  • 标签:数据结构 数据
   现在我大二了,学校里面开的数据结构我们已经学习了半个多学期了。在我看来,数据结构这东西其实是非常重要的,他会告诉你什么时候用什么算法,用那种思想考虑问题,会是你的代码有大幅度的提升。并且还有一个更重要的认识便是,对于数据结构而言,无论是那种语言,都是通用的。
   那就让我先概括的介绍一下基本数据结构吧。
   数据结构包含线性表、栈、队列hashu.html" target="_blank">二叉树、树这几种基本的结构。
    一:线性表、栈、队列
    在我学的这本数据结构书上,将这三种基本结构放在了一章上面了,其实并不是因为这三种不重要或者是简单。而是这三者中存在着某种联系。即都是利用数组来实现的,只不过他们的添加数据和删除数据的实现方式不同。
    线性表在插入数据时,需要把插入位置后面的数据都向后面挪一位,才能给要插入的位置赋值,同理如果要删除一个数据,则需要删除这个数据后的所有数据都向前面挪动一位。对于c++而言,线性表还有一种链表,是线性表一种实现方式。他的插入和caozuo.html" target="_blank">删除操作就没有刚刚想的那么麻烦了,这种实现方式只需要将其指针改变就好了。在这里就不赘述了。
    栈,称他为“后进先出”的线性表。即如果要想栈里插入数据,只能把数据插入栈顶,如果要删除数据,也只能从栈顶开始删除。
    队列,则是与栈相对的,他的数据存储方式则是“先进先出”。
    下面给出在java中如何在数组中插入一个数据:
  
class="java">
//插入
	public void insert(int index,E e){
		//判断所插入的位置及元素是否符合规则
		if(index>=count){
			
			System.out.println("输入错误");
		}
		if(count==index){
			
			Object[] newarray=new Object[array.length+increase];
			for(int i=0;i<newarray.length;i++){
				
				newarray[i]=array[i];
			}
			newarray[index]=e;
			array=newarray;
		}
		else{
			
			for(int i=count;i>index;i--){
				
				array[i]=array[i-1];
			}
			array[index]=e;
		}
		count+=1;
		
	}

   以及如何删除
 
//删除
	public void delete(int index){
		//判断是否超出
		if(index>count){
			System.out.println("没有要删除的位置");
	
		}
		if(index==count){
			count-=1;
		}
		else{
			
			Object[] newarray=new Object[count];
			for(int i=index;i<count;i++){
				
				newarray[i]=array[i+1];
			}
			array=newarray;
		}
		
	}

   二:二叉树
     一棵二叉树是由有限集合组成的,这个集合或为空。
     下面是一个简单的造树的过程,现让我们简单的了解一下二叉树的基本结构吧!
   
public class Tree {
	
	public Node creatTree(){
		
		Node root=new Node();
		root.data="根节点";
		Node left1=new Node();
		left1.data="左一节点";
		Node right1=new Node();
		right1.data="右一节点";
		root.leftchild=left1;
		root.rightchild=right1;
		left1.parent=root;
		right1.parent=root;
		
		Node left1left=new Node();
		left1left.data="左左一节点";
		Node left1right=new Node();
		left1right.data="左右一节点";
		left1.leftchild=left1left;
		left1.rightchild=left1right;
		left1left.parent=left1;
		left1right.parent=left1;
		
		Node right1left=new Node();
		right1left.data="右左一节点";
		Node right1right=new Node();
		right1right.data="右右一节点";
		right1.leftchild=right1left;
		right1.rightchild=right1right;
		right1left.parent=right1;
		right1right.parent=right1;
		
		return root;
}
	
	


    了解了其基本的结构后,还要了解二叉树的遍历。一般的,我们只会提三种遍历:前序遍历、中序遍历、后序遍历。
    所谓前序遍历,即遍历的顺序遵从先根节点,再左节点,最后右节点。中序遍历则遵从先左节点,再根节点,最后右节点。后序遍历则遵从先左节点,再右节点,最后根节点。
    下面是中序遍历的代码:
//中序遍历
	public void middle()
	{
		middleEx(root.leftchild);
		System.out.print(root.nValue + " ");
		middleEx(root.rightchild);
	}
	
	private void middleEx(JTreeNode node)
	{
		if(node == null)
			return;
		middleEx(node.leftchild);
		System.out.print(node.nValue +" ");
		middleEx(node.rightchild);
	}

    其实数据结构并不是只包含了这些结构,还有一些比较经典的排序及检索的算法。像什么插入排序、冒泡排序、选择排序==。

这些排序算法到目前还没有时间写,等以后有时间在为大家进行详解。
上一篇: 分形 下一篇: File mkdirs遇到的问题
发表评论
用户名: 匿名