Сформировать новый список в котором элементы расположены в порядке возростания - C (СИ)
Формулировка задачи:
Дан список F=<1,8,9,0,1,3,2,4,1,12,23,1,23,2,19,1>.Сформирова ть новый список в котором элементы расположены в порядке возростания.Программка не работает,незнаю где ошибка))Что-то не так с SortList(((
Решение задачи: «Сформировать новый список в котором элементы расположены в порядке возростания»
textual
Листинг программы
#include "stdafx.h" #include <locale.h> #include <conio.h> struct Node { int value; Node *link; }; typedef struct Node NODE; void initNode(NODE **head,int val); void addNodeToEnd(NODE *head,int val); void VuvestuSpusok (NODE *head,char text[]=""); void SortList(NODE **head); void DodatuZna4ennya(NODE **head,int val); int _tmain(int argc, _TCHAR* argv[]) { setlocale (LC_ALL, "Rusian"); NODE *firstHead=NULL,*SpusokNew=NULL; int masuv[]={1,8,9,0,1,3,2,4,1,12,23,1,23,2,19,1}; for (int i=0;i<16;i++) { DodatuZna4ennya(&firstHead, masuv[i]); } VuvestuSpusok(firstHead,"начальный"); SortList(&firstHead); VuvestuSpusok(SpusokNew,"новый"); getch(); return 0; } void initNode(NODE **head,int val) { *head = new NODE; (*head)->value=val; (*head)->link=NULL; } void addNodeToEnd(NODE *head,int val) { NODE *new_node, *temp=head; while (1) { if (temp->link==NULL) {break;} else {temp=temp->link;} } new_node = new NODE; new_node->value=val; new_node->link=temp->link; temp->link=new_node; } void VuvestuSpusok (NODE *head,char text[]) { printf("spusok %s --> ",text); NODE *temp=head; while (1) { if(temp == NULL) { printf("\n"); break; } else { printf("%d",temp->value); temp=temp->link; } } } void SortList(NODE **head) { NODE *node_old1=*head; NODE *node_old2; NODE *node_new1,*node_new2; node_new1=node_old1; node_old2=node_old1->link; node_new1->link =NULL; node_old1=node_old2; while (node_old1!=NULL) { if (node_old1->value < node_new1->value) { node_old2=node_old1->link; node_old1->link = node_new1; node_new1=node_old1; node_old1=node_old2; } else { node_new2=node_new1; while (node_new2->link !=NULL) { if ((node_new2->link)->value > (node_old1->value)) break; node_new2 = node_new2->link; } node_old2=node_old1->link; node_old1->link = node_new2->link; node_new2->link=node_old1; node_old1=node_old2; } } *head=node_new1; } void DodatuZna4ennya(NODE **head,int val) { if((*head)==NULL){initNode(&(*head),val);} else{addNodeToEnd((*head),val);} }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д