Добавить к программе метод extend, добавляющий к списку копию другого списка. c#
using system; (3 лаб 2 -)
using system.collections.generic;
using system.text;
namespace mylinkedlist
{//2.1. метод extend, добавляющий к списку копию другого списка.
public class listunderflow : exception { }
public class linkedlist // односвязный список
{
class node
{
public double value { get; set; }
public node next { get; set; }
public node(double item)
{
value = item;
next = null;
}
}
node head = null; // головной/первый элемент
node tail = null; // последний/хвостовой элемент
int count; // количество элементов в списке
// добавление элемента в конец списка
public void add(double item)
{
node node = new node(item);
if (head == null)
head = node;
else
tail.next = node;
tail = node;
count++;
}
// добавление в начало
public void appendfirst(double item)
{
node node = new node(item);
node.next = head;
head = node;
if (count == 0)
tail = head;
count++;
}
// удаление элемента
public bool remove(double item)
{
node current = head; // текущий элемент
node previous = null; // предыдущий элемент
while (current ! = null)
{
if (current.value == item)
{
// если узел в середине или в конце
if (previous ! = null)
{
// убираем узел current, теперь previous ссылается не на current,
// а на current.next
previous.next = current.next;
// если current.next не установлен, значит, узел последний,
// изменяем переменную tail
if (current.next == null)
tail = previous;
}
else
{
// если удаляется первый элемент
// переустанавливаем значение head
head = head.next;
// если после удаления список пуст, сбрасываем tail
if (head == null)
tail = null;
}
count--;
return true;
}
previous = current;
current = current.next;
}
return false;
}
// содержит ли список элемент
public bool contains(double item)
{
node current = head;
while (current ! = null)
{
if (current.value == item)
return true;
current = current.next;
}
return false;
}
// вывод элементов списка
public void printlist()
{
if (head == null)
throw new listunderflow();
node current = head;
while (current ! = null)
{
console.write(current.value + " ");
current = current.next;
}
console.writeline();
}
// строковое представление списка
public override string tostring()
{
if (head == null)
throw new listunderflow();
stringbuilder printlist = new stringbuilder();
node current = head;
while (current ! = null)
{
printlist.append(current.value + " ");
current = current.next;
}
return printlist.tostring();
}
}
class program
{
static void main(string[] args)
{
try
{
linkedlist list = new linkedlist();
// добавление элементов
list.add(5);
list.add(7);
list.add(9);
list.add(3);
// вывод элементов списка
console.writeline("список: {0}", list);
linkedlist list1 = new linkedlist();
// добавление элементов
list1.add(3);
list1.add(-3);
list1.add(2);
list1.add(1);
// вывод элементов списка
console.writeline("список: {0}", list1);
// или
// console.write("список: ");
// list.printlist();
// удаление элемента
console.writeline("введите элемент для удаления");
double x = convert.todouble(console.;
if (list.remove(x))
{
console.writeline("элемент {0} удален из списка", x);
console.writeline("список: {0}", list);
}
else console.writeline("элемент {0} в списке отсутствует", x);
// проверка наличия элемента
console.writeline("введите элемент для поиска");
x = convert.todouble(console.;
if (list.contains(x))
console.writeline("элемент есть в списке");
else
console.writeline("элемент в списке отсутствует");
// добавление элемента в начало
list.appendfirst(4);
console.writeline("элемент 4 добавлен в начало списка");
console.writeline("список: {0}", list);
//console.writeline("список: {0}", list.;
}
catch (listunderflow)
{
console.writeline("список пуст");
}
console.readline();
}
}
}
Метод добавления выглядит так:
public void Extend(LinkedList list)
{
Node current = list.head;
while(current != null)
{
Add(current.Value);
current = current.Next;
}
}
Использовать можно так: list.Extend(list1);
list и list1 уже созданные в программе списки.
В список list добавятся элементы из списка list1.