|
最近在学习数据结构的java表示方法(本来c描述的就学不好,但觉得到时做毕业论文可能有用,所以就再学) 这是一个link-list的例子,半图形界面,但还没有调试成功。 main.java是运行主类,listtest.java是图形界面,list.java是链表主代码
main.java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class main { public static void main(string [] args) { listtest listtest = new listtest(); listtest.init (); listtest.setsize (400,400); listtest.setvisible (true); } }
listtest.java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.lang.*; public class listtest extends jframe { private jbutton addatf,addatb,delfrf,delfrb,print; private jtextfield input; private jlabel display; private jpanel p1,p2,p3,p4; private container container; private list mylist; listener listener; public void init() { listener listener = new listener(); list mylist = new list(); jtextfield input = new jtextfield(35); jlabel display = new jlabel("result: "); jbutton addatf = new jbutton("addatf"); jbutton addatb = new jbutton("addatb"); jbutton delfrf = new jbutton("delfrf"); jbutton delfrb = new jbutton("delfrb"); jbutton print = new jbutton("print"); jpanel p1 = new jpanel(); jpanel p2 = new jpanel(); jpanel p3 = new jpanel(); jpanel p4 = new jpanel(); container = getcontentpane(); p1.add (input); p2.add (display); p3.add (addatf); p3.add (addatb); p3.add (delfrf); p3.add (delfrb); p3.add (print); p4.add (p1); p4.add (p2); p4.add (p3); container.add (p4); addatf.addactionlistener(listener); addatb.addactionlistener(listener); delfrf.addactionlistener(listener); delfrb.addactionlistener(listener); print.addactionlistener(listener); } class listener implements actionlistener { public void actionperformed( actionevent e) { double ran = 100 * math.random(); int ranint = (int)ran; integer objint = new integer(ranint); string cmd = e.getactioncommand(); if (cmd.equals("addatf")) { system.out.println("the random number "+ ranint +" add at front"); mylist.insertatback( objint ); } else if (cmd.equals("addatb")) { system.out.println("add at back"); } else if (cmd.equals("delfrf")) { system.out.println("delete from front"); } else if (cmd.equals("delfrb")) { system.out.println("delete from back"); } else if (cmd.equals("print")) { mylist.print(); } } } }
list.java import java.*; public class list { private listnode firstnode; private listnode lastnode; private string name; public list( string s) { name = s; firstnode = lastnode = null; } public list() { this("list");} public void insertatfront( object insertitem) { if(isempty()) firstnode = lastnode = new listnode( insertitem); else firstnode = new listnode( insertitem, firstnode); } public void insertatback( object insertitem) { if( isempty()) firstnode = lastnode = new listnode( insertitem); else lastnode = lastnode.next = new listnode( insertitem); } public object delfromfront() throws emptylistexception { object removeitem = null; if (isempty()) throw new emptylistexception(name); removeitem = firstnode.data; if( firstnode.equals (lastnode)) firstnode = lastnode = null; else firstnode = firstnode.next; return removeitem; } public object delfromback() throws emptylistexception { object removeitem = null; if ( isempty()) throw new emptylistexception(name); removeitem = lastnode.data; if(firstnode.equals (lastnode)) firstnode = lastnode = null; else { listnode movepoobject = firstnode; while( movepoobject.next != lastnode) movepoobject = movepoobject.next; lastnode = movepoobject; movepoobject.next = null; } return removeitem; } public boolean isempty() { return (firstnode == null); } public void print() { if (isempty()) { system.out.println ("empty" + name); return; } system.out.print ("the" + name + "is: "); listnode current = firstnode; while( current != null) { system.out.print(current.data); current = current.next; } system.out.println (); system.out.println (); } class listnode { object data; listnode next; listnode( object o) { data = o; next = null; } listnode( object o, listnode nextnode) { data = o; next = nextnode; } object getnode() { return data; } listnode getnext() { return next; } }
class emptylistexception extends runtimeexception { public emptylistexception (string name) { super("the" + name +"is empty"); } } }
|