「java数据结构实例」java数据结构实现

博主:adminadmin 2023-03-17 16:13:05 169

本篇文章给大家谈谈java数据结构实例,以及java数据结构实现对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

用java实现一个数据结构!

import java.io.IOException;

import java.util.Scanner;

public class LinkList {

private static Scanner san = new Scanner(System.in);

public static void main(String[] args) throws IOException {

List list = new List();

for (int i = 1; i = 10; i++) {

System.out.print("请输入第" + i + "个数: ");

list.add(san.nextInt());

list.print();

}

System.out.println("输入的数据如下: ");

list.print();

}

}

class node {

int data;

node next = this; // 指向自己

}

class List {

private node header = new node();

// 循环链表的尾部添加数据

public node add(int data) {

node current = new node();

node temp = header;

while (temp.next != header)

temp = temp.next;

current.data = data;

current.next = temp.next;

temp.next = current;

return current;

}

// 查询某个数字的位置 如果不在 返回-1;

public int search(int data) {

node temp = header;

int n = 0;

while (temp.next != header) {

temp = temp.next;

n++;

if (temp.data == data)

break;

}

if (temp.data == data)

return n;

else

return -1;

}

// 打印出整个链表

public void print() {

node temp = header;

while (temp.next != header) {

temp = temp.next;

System.out.print(temp.data + " ");

}

System.out.println();

}

// 插入数据

public node Insert(int pos, int data) {

node temp = header;

node current = new node();

for (int i = 0; i pos - 1; i++) {

if (temp.next != header) {

temp = temp.next;

} else

return null;

}

current.data = data;

if (temp.next != header) {

current.next = temp.next;

}

temp.next = current;

return current;

}

// 删除某个数据

public node del(int data) {

node temp = header;

node oldtemp = null;

node current = null;

while (temp.next != header) {

oldtemp = temp;

temp = temp.next;

if (temp.data == data) {

current = temp;

break;

}

}

if (current == header)

return null;

oldtemp.next = current.next;

return current;

}

}

我想要找一份关于java数据结构二叉树的实例详解(所有基本操作,包括二叉树的高度和节点总数)

#includestdio.h

#includestring.h

#includestdlib.h

#define Max 20 //结点的最大个数

typedef struct node{

char data;

struct node *lchild,*rchild;

}BinTNode; //自定义二叉树的结点类型

typedef BinTNode *BinTree; //定义二叉树的指针

int NodeNum,leaf; //NodeNum为结点数,leaf为叶子数

//基于先序遍历算法创建二叉树

//要求输入先序序列,其中加入虚结点"#"以示空指针的位置

BinTree CreatBinTree(void){

BinTree T;

char ch;

if((ch=getchar())=='#')

return(NULL); //读入#,返回空指针

else{

T=(BinTNode *)malloc(sizeof(BinTNode)); //生成结点

T-data=ch;

T-lchild=CreatBinTree(); //构造左子树

T-rchild=CreatBinTree(); //构造右子树

return(T);

}

}

//先序遍历

void Preorder(BinTree T){

if(T){

printf("%c",T-data); //访问结点

Preorder(T-lchild); //先序遍历左子树

Preorder(T-rchild); //先序遍历右子树

}

}

//中序遍历

void Inorder(BinTree T){

if(T){

Inorder(T-lchild); //中序遍历左子树

printf("%c",T-data); //访问结点

Inorder(T-rchild); //中序遍历右子树

}

}

//后序遍历

void Postorder(BinTree T){

if(T){

Postorder(T-lchild); //后序遍历左子树

Postorder(T-rchild); //后序遍历右子树

printf("%c",T-data); //访问结点

}

}

//采用后序遍历求二叉树的深度、结点数及叶子数的递归算法

int TreeDepth(BinTree T){

int hl,hr,max;

if(T){

hl=TreeDepth(T-lchild); //求左深度

hr=TreeDepth(T-rchild); //求右深度

max=hlhr? hl:hr; //取左右深度的最大值

NodeNum=NodeNum+1; //求结点数

if(hl==0hr==0) leaf=leaf+1; //若左右深度为0,即为叶子。

return(max+1);

}

else return(0);

}

//主函数

void main(){

BinTree root;

int i,depth;

printf("\n");

printf("Creat Bin_Tree; Input preorder:"); //输入完全二叉树的先序序列,

// 用#代表虚结点,如ABD###CE##F##

root=CreatBinTree(); //创建二叉树,返回根结点

do{ //从菜单中选择遍历方式,输入序号。

printf("\t********** select ************\n");

printf("\t1: Preorder Traversal\n");

printf("\t2: Iorder Traversal\n");

printf("\t3: Postorder traversal\n");

printf("\t4: PostTreeDepth,Node number,Leaf number\n");

printf("\t0: Exit\n");

printf("\t*******************************\n");

scanf("%d",i); //输入菜单序号(0-4)

switch (i){

case 1: printf("Print Bin_tree Preorder: ");

Preorder(root); //先序遍历

break;

case 2: printf("Print Bin_Tree Inorder: ");

Inorder(root); //中序遍历

break;

case 3: printf("Print Bin_Tree Postorder: ");

Postorder(root); //后序遍历

break;

case 4: depth=TreeDepth(root); //求树的深度及叶子数

printf("BinTree Depth=%d BinTree Node number=%d",depth,NodeNum);

printf(" BinTree Leaf number=%d",leaf);

break;

case 5: printf("LevePrint Bin_Tree: ");

Levelorder(root); //按层次遍历

break;

default: exit(1);

}

printf("\n");

}while(i!=0);

}

//按层遍历

Levelorder( BinTNode *root){

BinTNode * q[Max]; //定义BinTNode类型的队列 用于存放节点 队列长最大为20个元素

int front=0,rear=0; //初始化队列为空

BinTNode *p; //临时节点指针

if(root!=NULL){ //将根节点进队

rear=(rear+1)%Max;

q[rear]=root;

}

while(front!=rear){

front=(front+1)%Max;

p=q[front]; //删除队首的元素 让两个节点(左右节点)孤立

printf("%c",p-data); //输出队列首元素的值

if(p-left!=null){ //如果存在左孩子节点,则左孩子节点进入队列

rear=(rear+1)%Max;

q[rear]=p-left;

}

if(p-right!=null){ //如果存在右孩子节点,则右孩子节点进入队列

rear=(rear+1)%Max;

q[rear]=p-right;

}

}

}

关于数据结构(java)的一个代码

描述栈抽象数据类型的SStack接口的声明

public interfaceSStackE //栈接口

{

boolean isEmpty(); //判断是否空栈,若空栈返回true

boolean push(E element); //元素element入栈,若操作成功返回true

E pop(); //出栈,返回当前栈顶元素,若栈空返回null

E get(); //取栈顶元素值,未出栈,若栈空返回null

}

顺序栈类具体操作方法的声明:

importdataStructure.linearList.SStack;

public classSeqStackE implements SStackE

//顺序栈类

{

private Object value[]; //存储栈的数据元素

private int top; //top为栈顶元素下标

public SeqStack(int capacity) //构造指定容量的空栈

{

this.value = newObject[Math.abs(capacity)];

this.top=-1;

}

public SeqStack() //构造默认容量的空栈

{

this(10);

}

public boolean isEmpty() //判断是否空栈,若空栈返回true

{

return this.top==-1;

}

public boolean push(E element) //元素element入栈,若操作成功返回true

{

if (element==null)

return false; //空对象(null)不能入栈

if (this.top==value.length-1) //若栈满,则扩充容量

{

Object[] temp = this.value;

this.value = newObject[temp.length*2];

for (int i=0; itemp.length;i++)

this.value[i] = temp[i];

}

this.top++;

this.value[this.top] = element;

return true;

}

public E pop() //出栈,返回当前栈顶元素,若栈空返回null

{

if (!isEmpty())

return (E)this.value[this.top--];

else

return null;

}

public E get() //取栈顶元素值,未出栈,栈顶元素未改变

{

if (!isEmpty())

return (E)this.value[this.top];

else

return null;

}

public String toString() //返回栈中各元素的字符串描述

{

String str="{";

if (this.top!=-1)

str +=this.value[this.top].toString();

for (int i=this.top-1; i=0; i--)

str += ","+this.value[i].toString();

return str+"} ";

}

实例引用public static void main(String args[])

{

SeqStackString stack = newSeqStackString(20);

System.out.print("Push: ");

char ch='a';

for(int i=0;i5;i++)

{

String str =(char)(ch+i)+"";

stack.push(str);

System.out.print(str+" ");

}

System.out.println("\n"+stack.toString());

System.out.print("Pop : ");

while(!stack.isEmpty()) //全部出栈

System.out.print(stack.pop().toString()+" ");

System.out.println();

}

关于java数据结构实例和java数据结构实现的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。