الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

الإضافة و الطباعة في linked List

بدأه Al-waleed في 27 يوليو 2011 · 2 رد · 576 مشاهدة · في JavaSE
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

هذا البرنامج الذي كتبته يعطيني مخرجات خاطئة :

package first;

public class ALwaleedFamaly {
	private String name;
	private int phoneNumber;

	public ALwaleedFamaly()
	{
		name=null;
		phoneNumber=0;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPhoneNumber() {
		return phoneNumber;
	}

	public void setPhoneNumber(int phoneNumber) {
		this.phoneNumber = phoneNumber;
	}
	public void print(){
		System.out.println("name :"+name);
		System.out.println("phone Number :"+phoneNumber);


	}


}

package first;

public class Node {
	private ALwaleedFamaly data;
	private Node Next;

	public Node()
	{
		data=null;
		Next=null;
	}
	public Node(ALwaleedFamaly Nod)
	{
		data=Nod;
		Next=null;
	}
	public Node(ALwaleedFamaly No, Node nex)
	{
		this.data=No;
		this.Next=nex;
	}
	public ALwaleedFamaly getdata() {
		return data;
	}
	public void setData(ALwaleedFamaly node) {
		data = node;
	}
	public Node getNext() {
		return Next;
	}
	public void setNext(Node next) {
		Next = next;
	}




}

package first;

public class List {
	private Node head;
	private Node tail;

	public List()
	{
		head=null;
		tail=null;
	}
	public boolean isEmpty()
	{
		return head==null;
	}
	public void insterAtFirst(ALwaleedFamaly Obj)
	{
		Node No=new Node(Obj,head);
		No.setNext(head);
		if(isEmpty())
		{
			head=tail=No;
		}
		else
		{
			head=No;


		}



	}
	public void display()
	{
		Node current=head;

		while(current !=null)
		{
			current.getdata().print();
			current=current.getNext();

		}
	}

}

package first;

import java.util.Scanner;
public class MainFirstClass {
	public static void main(String[]args)
	{
		Scanner input=new Scanner(System.in);
		Node Nod=new Node();
		List Lis=new List();
		ALwaleedFamaly Alwaleed=new ALwaleedFamaly();
		int exit;

		do{
			System.out.println("Enter");
			exit=input.nextInt();

			switch(exit)
			{
			case 1:
				System.out.println("Enter name");
				String n=input.next();
				Alwaleed.setName(n);
				System.out.println("Enter phone number");
				int phone=input.nextInt();
				Alwaleed.setPhoneNumber(phone);
				Nod.setData(Alwaleed);
				Lis.insterAtFirst(Alwaleed);
				break;
			case 2:
				Lis.display();
			}
		}while(exit!=0);
	}

}

المخرجااااات

Enter 1_ inset  2- print
1
Enter name
a
Enter phone number
2
Enter 1_ inset  2- print
1
Enter name
b
Enter phone number
3
Enter 1_ inset  2- print
2
name :b
phone Number :3
name :b
phone Number :3
Enter 1_ inset  2- print
0

لاحظوا الخطا في المخرجات تتكر النتيجة

أين الخطأ الأن هل هو في الاضافة أم في الطباعة ؟!

#2

وعليكم السلام ورحمة الله وبركاته,,

المشكلة في إضافة اليبانات في MainFirstClass

أولاً لا حاجة للمتغير Nod .

ثانياً متغير Alwaleed أسندت قيمته قبل التكرار

فأصبح التكرار يقوم بإضافة Node جديد في القائمة

وكلها تشير إلى كائن AlwaleedFamily نفسه.

والمفروض أن كل مدخل في القائمة له

كائن خاص به

تعديل الكلاس كالتالي:

package first;

import java.util.Scanner;
public class MainFirstClass {
        public static void main(String[]args)
        {
                Scanner input=new Scanner(System.in);

                List Lis=new List();
                int exit;

                do{
                        System.out.println("Enter");
                        exit=input.nextInt();

                        switch(exit)
                        {
                        case 1:
                        		ALwaleedFamaly Alwaleed=new ALwaleedFamaly();
                                System.out.println("Enter name");
                                String n=input.next();
                                Alwaleed.setName(n);
                                System.out.println("Enter phone number");
                                int phone=input.nextInt();
                                Alwaleed.setPhoneNumber(phone);
                                Lis.insterAtFirst(Alwaleed);
                                break;
                        case 2:
                                Lis.display();
                        }
                }while(exit!=0);
        }

}

لماذا لاتستخدم LinkedList التي ضمن مكتبات الجافا؟

تم تعديل هذه المشاركة بواسطة log.txt في 28 يوليو 2011 في 05:11

#3

أنا لم اتعلم LinkendList التي ضمن مكتبات جافا ..

وسأتعلمها

أشكرك

مواضيع مشابهة