Ввести с клавиатуры число и поместить его перед тем элементом списка, который больше него - C (СИ) (79471)
Формулировка задачи:
Вопрос:как ввести с клавиатуры число и поместить его перед тем элементом списка, который больше него?
struct spis{ char c; spis *next; }*p,*top,*cur,*prev; void push(char value); void show(void); int main(){ top=0; char key,value; int done=false; while(!done) { system("cls"); show(); printf("\nA)dd\nD)elete\nQ)uit\n"); key=getchar(); switch(toupper(key)) { case 'A': value=getch(); push(value); break; case 'Q': done=true; break; } } return 0; } void push(char value) { printf("\n Inpus\n"); p=new spis; p->c=value; p->next=NULL; if(top==NULL) top=p; cur=top; prev=0; while(cur && value>cur->c) { prev=cur; cur=cur->next; } if(cur == NULL)prev->next=p; else if(prev) { p->next=cur; prev->next=p; }else { top=p; top->next=top==cur?NULL:cur; } } void show() { p=top; if(p==NULL) printf("\nQueue is empty\n"); else printf("\nQueue\n"); while(p) { printf("%c\n",p->c); p=p->next; } }
Решение задачи: «Ввести с клавиатуры число и поместить его перед тем элементом списка, который больше него»
textual
Листинг программы
void AddOchdLeft(tochd *sp, int inf) { tochd *spt=new tochd; spt->inf = inf; spt->left = sp->left; spt->rigth = sp; spt->left->rigth = spt; sp->left = spt; return; }
Объяснение кода листинга программы
В данном коде реализуется функция AddOchdLeft, которая добавляет новый элемент в список, содержащий информацию об очередном числе и ссылку на элемент списка, который больше этого числа.
void AddOchdLeft(tochd *sp, int inf)
- объявление функции с двумя параметрами: указатель на узел спискаsp
и числоinf
.tochd *spt=new tochd;
- создание нового узла списка и присвоение его указателюspt
.spt->inf = inf;
- присваивание числового значения новому узлу списка.spt->left = sp->left;
- присвоение ссылки на левый элемент списка новому узлу списка.spt->rigth = sp;
- присвоение ссылки на правый элемент списка новому узлу списка.spt->left->rigth = spt;
- присвоение ссылки на новый узел списка левому элементу списка.sp->left = spt;
- присвоение ссылки на новый узел списка левому элементу списка.return;
- завершение функции. Следует отметить, что в данном коде не обрабатываются ошибки, которые могут возникнуть при выделении памяти под новый узел списка или при изменении ссылок на узлы списка.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д