نسخة الكود كما يلي:
/**
* قائمة مرتبطة في اتجاه واحد
*
*/
عوملة الطبقة العامة <e> {
عقدة الفئة الثابتة الخاصة <e> {// فئة العقدة
بيانات E ؛
العقدة <e> التالي ؛
العقدة (e e) {
this.data = e ؛
this.next = null ؛
}
}
عقدة خاصة
العقدة الخاصة <E> الأخيرة ؛
العقدة الخاصة <e> أخرى = فارغة ؛
طول int = 0 ؛
/**
* طريقة البناء غير المعلمة
*/
nodelist العامة () {
// العقدة الافتراضية فارغة
this.head = node node <e> (null) ؛
}
/**
* إنشاء عقدة أثناء التهيئة
*
* param بيانات
* بيانات
*/
الإيماءة العامة (بيانات e) {
this.head = node node <e> (data) ؛
this.last = head ؛
طول ++ ؛
}
/**
* إضافة عقدة (طريقة إدراج الذيل)
*
* param بيانات
* بيانات
*/
void public add (e data) {
if (isempty ()) {
HEAD = NED NODE <E> (DATA) ؛
الأخير = الرأس ؛
طول ++ ؛
} آخر {
العقدة <e> newNode = new node <e> (data) ؛
last.next = newNode ؛
الأخير = newNode ؛
}
}
/**
* احصل على البيانات في الفهرس (خطأ إدخال الفهرس يلقي استثناء خارج الحدود)
* فهرس فهرس param
* @بيانات العودة في الفهرس
*/
عام E GET (int index) {
if (index <0 || index> length) {
رمي indexoutofboundsexception ("الفهرس:"+فهرس) ؛
}
الآخر = الرأس ؛
لـ (int i = 0 ؛ i <index ؛ i ++) {
أخرى = other.next ؛
}
إرجاع other.data ؛
}
/**
* قيمة جديدة تحل محل القيمة القديمة
* return النجاح صحيح ، لم يتم العثور عليه كخطأ
*/
مجموعة منطقية عامة (E Oldvalue ، E NewValue) {
الآخر = الرأس ؛
بينما (آخر! = فارغ) {
if (other.data.equals (oldvalue)) {
other.data = newValue ؛
العودة صحيح.
}
أخرى = other.next ؛
}
العودة كاذبة
}
/**
* أدخل عنصرًا بعد تحديد العنصر
*
* param بيانات
* عنصر محدد
* param insertdata
* العناصر التي تحتاج إلى إدراجها
* @return false هو العنصر غير موجود ، صحيح هو الإدراج ناجح
*/
إضافة منطقية عامة (بيانات e ، e insertdata) {
الآخر = الرأس ؛
بينما (آخر! = فارغ) {
if (other.data.equals (data)) {
العقدة <e> newNode = new node <e> (inSertData) ؛
العقدة <e> temp = other.next ؛
newNode.next = temp ؛
other.next = newNode ؛
طول ++ ؛
العودة صحيح.
}
أخرى = other.next ؛
}
العودة كاذبة
}
/**
* ما إذا تم تضمين هذا العنصر في القائمة المرتبطة
* @مدرج على أنه صحيح ، وليس كاذب
*/
يحتوي منطقية عامة على (بيانات) {
الآخر = الرأس ؛
بينما (آخر! = فارغ) {
if (other.data.equals (data)) {
العودة صحيح.
}
أخرى = other.next ؛
}
العودة كاذبة
}
/**
* قم بإزالة العنصر المحدد
* عناصر البيانات param التي يجب إزالتها
* return غير موجود وصحيح للنجاح
*/
إزالة منطقية عامة (بيانات e) {
الآخر = الرأس ؛
العقدة <e> temp = head ؛ // متغير مؤقت ، يستخدم لحفظ العقدة السابقة
بينما (آخر! = فارغ) {
if (other.data.equals (data)) {
temp.next = other.next ؛
طول--؛
العودة صحيح.
}
درجة الحرارة = أخرى ؛
أخرى = other.next ؛
}
العودة كاذبة
}
/**
* تحديد ما إذا كانت القائمة المرتبطة فارغة
*
* @العودة الفار
*/
منطقية عامة isempty () {
عودة طول == 0 ؛
}
/**
* امسح قائمة الارتباطات
*/
الفراغ العام clear () {
this.head = null ؛
this.length = 0 ؛
}
/**
* إخراج جميع العقد
*/
printlink printlink () {
if (isempty ()) {
System.out.println ("قائمة مرتبطة فارغة") ؛
}آخر{
الآخر = الرأس ؛
بينما (آخر! = فارغ) {
system.out.print (other.data) ؛
أخرى = other.next ؛
}
System.out.println () ؛
}
}
}