В этой программе мы обсудим, как реализовать односвязный список на языке C ++.

#include ‹iostream›

используя пространство имен std;

класс Node

{

общественность:

данные int;

Узел * следующий;

};

Узел * START = NULL;

void push (int new_data) {

Узел * new_node = новый узел ();

новый_узел- ›данные = новые_данные;

new_node- ›next = START;

СТАРТ = новый_узел;

}

void append (int new_data) {

Узел * cur = START;

Узел * new_node = новый узел ();

новый_узел- ›данные = новые_данные;

new_node- ›next = NULL;

while (текущий> следующий! = NULL) {

cur - ›следующий;

}

текущий ›следующий = новый_узел;

}

void insertAfterNode (int position, int new_data) {

Узел * cur = START, * new_node = new Node (), * temp;

новый_узел- ›данные = новые_данные;

if (position == 1) {

temp = текущий ›следующий;

текущий ›следующий = новый_узел;

new_node- ›next = temp;

} еще {

for (int i = 2; i ‹= position; i ++)

cur = текущий ›следующий;

temp = cur - ›следующий;

текущий ›следующий = новый_узел;

new_node- ›next = temp;

}

}

void deleteByValue (int value) {

Узел * cur = START, * prev, * temp;

while (cur - ›data! = value) {

prev = cur;

cur = текущий ›следующий;

}

temp = cur - ›следующий;

бесплатно (cur);

предыдущая ›следующая = темп;

cout ‹---------------- «Узел удален успешно» ‹< endl;

}

void deleteNode () {

Узел * temp;

если (START == NULL)

cout ‹---------------- «Список пуст…» ‹* endl;

еще{

temp = START - ›далее;

бесплатно (СТАРТ);

СТАРТ = темп;

}

cout ‹---------------- «Узел удален с начала» ‹< endl;

}

void deleteNodeAtEnd () {

Узел * cur = START, * prev;

если (START == NULL)

cout ‹---------------- «Список пуст…» ‹* endl;

еще{

while (cur - ›next! = NULL) {

prev = cur;

cur = текущий ›следующий;

}

предыдущая ›следующая = NULL;

бесплатно (cur);

}

cout ‹---------------- «Узел удален с конца» ‹< endl;

}

пустой дисплей ()

{

Узел * trav = START;

если (START == NULL)

cout ‹---------------- «Список пуст…»;

еще {

while (trav! = NULL) {

cout ‹-----------------

trav = trav- ›следующий;

}

cout ‹---------------- «NULL» ‹< endl;

}

}

int main ()

{

cout ‹

cout ‹---------------- «Поместить 90 в список»;

толкать (90);

cout ‹---------------- endl ‹

добавить (100);

cout ‹---------------- «Переместить 80 в список» ‹< endl;

толкать (80);

cout ‹---------------- «Нажать 110 после 3-го узла» ‹< endl;

insertAfterNode (3,110);

cout ‹* «Список отображения» ‹* endl;

отображать();

cout ‹

deleteNode ();

cout ‹* «Список отображения» ‹* endl;

отображать();

cout ‹

deleteNodeAtEnd ();

cout ‹* «Список отображения» ‹* endl;

отображать();

cout ‹---------------- «Удаление узла со значением 100» ‹< endl;

deleteByValue (100);

cout ‹* «Список отображения» ‹* endl;

отображать();

возврат 0;

}

Спасибо.