关于java实现家谱系统代码的信息

java二叉树家谱实现

mport java.awt.BorderLayout;

网站建设哪家好,找成都创新互联!专注于网页设计、网站建设、微信开发、小程序定制开发、集团企业网站建设等服务项目。为回馈新老客户创新互联还提供了施甸免费建站欢迎大家使用!

import java.awt.Dimension;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.util.Random;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTree;

import javax.swing.tree.DefaultMutableTreeNode;

public class Randomtree extends JFrame {

private JTree tree;

public static String[] school = { "初中课程", "高中课程", "大学课程" };

public static String[] color = { "颜色", "运动", "食物" };

public static String[] plant = { "植物", "动物", "人" };

public static String[][] school2= {

{ "初中一年级", "初中二年级", "初中三年级"}, {"高中一年级", "高中二年级",

"高中三年级"}, {"大学一年级", "大学二年级", "大学三年级", "大学四年级"} };

public static String[][] color2 = {

{ "绿色", "白色", "红色"}, {"足球", "篮球",

"羽毛球"}, {"面包", "牛奶", "披萨", "热狗"} };

public static String[][] plant2 = {

{ "玫瑰花", "月季花", "海棠花"}, {"猪", "狗",

"猫"}, {"黄种人", "黑种人", "白种人", } };

public static void main(String[] args) {

// TODO 自动生成方法存根

new Randomtree();

}

public Randomtree() {

super();

final Random random=new Random();

setVisible(true);

setSize(300,400);

tree = new JTree();

final JPanel panel = new JPanel();

panel.setPreferredSize(new Dimension(0, 40));

getContentPane().add(panel, BorderLayout.NORTH);

final JScrollPane scrollPane = new JScrollPane();

scrollPane.setPreferredSize(new Dimension(300, 350));

getContentPane().add(scrollPane, BorderLayout.CENTER);

final JButton button = new JButton();

button.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent arg0) {

int k=random.nextInt(3);

tree=getTree(k);

scrollPane.setViewportView(tree);

}

});

scrollPane.setViewportView(null);

button.setText("随机生成树");

panel.add(button);

pack();

}

protected JTree getTree(int n) {

String[] second=null;

String[][] three=null;

if(n==0){second=school; three=school2;}

if(n==1){second=color; three=color2;}

if(n==2){second=plant; three=plant2;}

DefaultMutableTreeNode root=new DefaultMutableTreeNode("root");

for(int i=0;isecond.length;i++){

DefaultMutableTreeNode secondNode=new DefaultMutableTreeNode(second[i]);

for (int j=0;jthree[i].length;j++){

DefaultMutableTreeNode threetNode=new DefaultMutableTreeNode(three[i][j]);

secondNode.add(threetNode);

}

root.add(secondNode);

}

JTree tree=new JTree(root);

tree.expandRow(1);

tree.expandRow(5);

tree.expandRow(9);

return tree;

}

}

简单的 例子你可以模仿一下

速求:数据结构课程设计 ——简易家谱系统 不能用二叉树 要代码

很难吗?树结构哦。看你数据结构学的怎么样呗。呵呵,我先想到的数据结构是双亲孩子表示法,当然查找关系的时候就要进行一些条件设置,比如祖孙的关系数大于父子的关系数2,兄弟拥有相同的双亲,堂兄弟的双亲是兄弟,回溯到相同的祖先结点则有共同的祖先咯。

运用Java数据结构的知识创建树,内容是族谱。

每一个节点有一个成员变量引用下一个节点就行了。

大致实现了一下单向链表 没有加入异常也没有仔细考虑实现的代码的效率,可以参考下。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

public class LinkListTest {

public static void main(String[] args) {

LinkListString ll=new LinkListString();

ll.add("a");

ll.add("b");

ll.add("c");

ll.add("d");

ll.remove(1);

System.out.println(ll.get(0));

System.out.println(ll.get(1));

System.out.println(ll.get(2));

System.out.println(ll.get(3));

System.out.println(ll.size());

}

}

class LinkListT{

private NodeT frist=null;

private NodeT last=null;

private int size=0;

public void add(T t){

if(frist==null){

NodeT node=new NodeT();

node.setT(t);

size++;

frist=node;

last=node;

}else{        

NodeT node=new NodeT();       

node.setT(t);

last.setNextNode(node);

size++;

last=node;

}

}

public T get(int i){      

if(i=0isize){

NodeT nod=null;

for(int n=0;n=i;n++){

if(n==0)

nod=frist;

else

nod=nod.getNextNode();             

if(i==n){

return nod.getT();

}         

}         

}

return null;

public void remove(int i){

if(i=0isize){

if(size2){

frist=null;

last=null;

size=0;

}else{

size--;

if(i==0){

frist=frist.getNextNode();        

}else{      

NodeT nod1=null;

NodeT nod2=null;

for(int n=0;n=i;n++){

if(n==0){

nod1=frist;

nod2=frist;

}else{

nod2=nod1;

nod1=nod1.getNextNode();                      

if(i==n){

if(nod1!=null)

nod2.setNextNode(nod1.getNextNode());

else{

nod2.setNextNode(null);

last=nod2;

}

}             

}   

}

}

}

public int size(){

return size;

}

}

class Node T{

public T getT() {

return t;

}

public void setT(T t) {

this.t = t;

}

public NodeT getNextNode() {

return nextNode;

}

public void setNextNode(NodeT nextNode) {

this.nextNode = nextNode;

}

private T t;

private NodeT nextNode=null;

}


当前名称:关于java实现家谱系统代码的信息
文章出自:http://azwzsj.com/article/dosidoe.html