`
wuyongzheng
  • 浏览: 3136 次
  • 性别: Icon_minigender_1
文章分类
社区版块
存档分类
最新评论

数据结构

    博客分类:
  • java
阅读更多
   现在我大二了,学校里面开的数据结构我们已经学习了半个多学期了。在我看来,数据结构这东西其实是非常重要的,他会告诉你什么时候用什么算法,用那种思想考虑问题,会是你的代码有大幅度的提升。并且还有一个更重要的认识便是,对于数据结构而言,无论是那种语言,都是通用的。
   那就让我先概括的介绍一下基本数据结构吧。
   数据结构包含线性表、栈、队列、二叉树、树这几种基本的结构。
    一:线性表、栈、队列
    在我学的这本数据结构书上,将这三种基本结构放在了一章上面了,其实并不是因为这三种不重要或者是简单。而是这三者中存在着某种联系。即都是利用数组来实现的,只不过他们的添加数据和删除数据的实现方式不同。
    线性表在插入数据时,需要把插入位置后面的数据都向后面挪一位,才能给要插入的位置赋值,同理如果要删除一个数据,则需要删除这个数据后的所有数据都向前面挪动一位。对于c++而言,线性表还有一种链表,是线性表一种实现方式。他的插入和删除操作就没有刚刚想的那么麻烦了,这种实现方式只需要将其指针改变就好了。在这里就不赘述了。
    栈,称他为“后进先出”的线性表。即如果要想栈里插入数据,只能把数据插入栈顶,如果要删除数据,也只能从栈顶开始删除。
    队列,则是与栈相对的,他的数据存储方式则是“先进先出”。
    下面给出在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);
	}

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

这些排序算法到目前还没有时间写,等以后有时间在为大家进行详解。
分享到:
评论

相关推荐

    PTA-数据结构与算法题目集.zip

    PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 PTA-数据结构与算法题目集 ...

    上海交大数据结构课件 上海交大数据结构课件

    数据结构是计算机科学中的核心课程之一,主要研究如何在计算机中高效地组织和存储数据,以便于进行各种操作。上海交通大学的数据结构课件是学习这一主题的重要资源,它涵盖了广泛的知识点,帮助学生深入理解数据结构...

    数据结构1800题(含详解答案)

    ### 数据结构基础知识点详解 #### 一、基础知识概念解析 **1. 算法的复杂性** - **题目**: 算法的计算量的大小称为计算的()。 - **答案**: B. 复杂性 - **解析**: 算法的复杂性通常用来衡量算法执行效率的...

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功!

    精心整理史上最全的数据结构flash演示动画,共5个版本,祝大家考研成功! \数据结构flash演示\版本1 \数据结构flash演示\版本2 \数据结构flash演示\版本3 \数据结构flash演示\版本4 \数据结构flash演示\版本5 ...

    数据结构1800试题.pdf

    数据结构是计算机科学中的核心课程,它探讨如何高效地组织和管理数据,以便进行快速查找、插入和删除等操作。这份“数据结构1800试题”提供了丰富的练习题目,涵盖了数据结构的主要概念和算法,适合学生进行复习和...

Global site tag (gtag.js) - Google Analytics