Двусвязный список с дублированием одного числа. - C (СИ)
Формулировка задачи:
Помогите написать код на на Си двусвязного списка с дублированием одного числа(единицы).
Это код(тот что ниже) для 1-ых двух членов двусвязного списка. Надо написать код для всего списка, и там продублировать единицы.
struct spis {
char text [10] ;
spis *pred ;
spis *next ;
}
main ()
{ spis * ps, *pm ;
ps = new spis ;
ps->pred=NULL ;
ps->next=NULL ;
gets ( ps->text) ;
pm = new spis ;
pm->pred = ps ;
pm->next =NULL ;
ps->next= pm ;
gets (pm->text ) ;
}Решение задачи: «Двусвязный список с дублированием одного числа.»
textual
Листинг программы
#include<stdio.h>
#include<conio.h>
struct st {int n;st *next;} *p, *pm, *ps, *pp=NULL;
main()
{ int c;
do {ps=new st;
printf (" \n input elements ");
scanf ("%d", &c);
(*ps).n=c;
(*ps).next=pp;
pp=ps;
printf(" \n continue? (yes=1) ");
}
while (getch()=='1');
printf ("\n");
printf ("%d", c );
getch();
return 0;
}
Объяснение кода листинга программы
В этом коде создается двусвязный список, который может содержать дубликаты элементов.
- Структура
stобъявляется как структура, содержащая целочисленное значениеnи указательnextна следующий элемент списка. - Указатель
pинициализируется какNULL, что означает, что список пуст. - В цикле
do-whileпользователь вводит элементы списка. - Для каждого введенного элемента создается новый элемент списка (
ps = new st;). - Значение элемента сохраняется в поле
nнового элемента. - Указатель
nextнового элемента указывает на предыдущий элемент списка (pp). - Предыдущий элемент списка теперь указывает на новый элемент (
pp = ps;). - После завершения цикла
do-whileвыводится сообщениеcontinue? (yes=1). - Если пользователь ввел '1', цикл продолжается, иначе он завершается.
- Выводится последний введенный элемент списка.
- Программа завершается.