У меня задание : Записи в линейном списке содержат ключевое поле типа int. Сформировать однонаправленный список. Удалить из него элемент с заданным номером, добавить К элементов, начиная с заданного номера;
Я сделал добавление, но только одного элемента, а надо К элементов, и удаление почему-то не работает...помогите кто сможет...
| Код | #include <string.h> #include<iostream> #include <conio.h> using namespace std; // Элемент данных struct Element { // Данные int data; // Адрес следующего элемента списка Element * Next;
};
// Односвязный список class List { // Адрес головного элемента списка Element * Head; // Количество элементов списка int Count;
public: // Конструктор List();
// Добавление элемента в список void Add(char data);
void PasteElement(int data, int position); void DelElement(int position);
// Распечатка содержимого списка void Print();
};
List::List() { Head = NULL; Count = 0; }
void List::Add(char data) { // создание нового элемента Element * temp = new Element;
// заполнение данными temp->data = data; // следующий элемент - головной элемент списка temp->Next = Head;
// новый элемент станвится головным элементом списка Head = temp;
Count++; }
void List::Print() { // запоминаем адрес головного элемента Element * temp = Head; // Пока еще есть элементы while(temp != 0) { // Выводим данные cout << temp->data<< " "; // Переходим на следующий элемент temp = temp->Next;
}
cout << endl; } void List::PasteElement(int data, int position) { Element *temp=Head; while(Count---position!=0) { temp=temp->Next; } Element *temp2; temp2=temp->Next; Element newel, *ptr_newel; ptr_newel=&newel; ptr_newel->data=data; ptr_newel->Next=temp2; temp->Next=ptr_newel; Count++; } void List::DelElement(int position) { Element *temp=Head; while(Count---(position+1)!=0) { temp=temp->Next; } Element *temp2=temp->Next; Element *temp3=temp2->Next; temp->Next=temp3; delete temp2; Count--; } // Тестовый пример int main() { setlocale (LC_CTYPE,"Russian"); int k,n,x,y,q; // Создаем объект класса List List lst; cout<<"\nВведите количество элементов:\n"; cin>>n; for(int i=0; i <n; i++) { cout<<"\nВведите элемент:\n"; cin>>k; lst.Add(k); } cout << "Заполненный список:" <<endl; lst.Print(); cout<<"\nВведите позицию с коротой добавлять:\n"; cin>>y; cout<<"\nВведите елемент:\n"; cin>>x; lst.PasteElement(x,y); lst.Print(); cout<<"\nВведите номер элемента для удаления:\n"; cin>>q; lst.DelElement(q); lst.Print(); getch(); }
|
|