//Дан список идентификаторов. Длина каждого идентификаторане более 8 символов. Идентификаторы в списе расположены в лексикографическом порядке. //Составить подпрограмму для замены на заданный идентификатор значения предпоследнего элемента списка. #include "stdafx.h" #include #include #include #include #define MAXDL 9 //Максимальная длина идентификатора struct EL_SP //тип элемента списка { char id[MAXDL]; //идентификатор struct EL_SP *sled; //ссылка на следующий элемент }; //фунцкия включения очередного идентификатора в список void Vkl ( struct EL_SP **p, char t_id[]) //Входные данные: *p - указатель списка идентификаторов в лексикографическом порядке, t_id включаемый в список (текущий идентификатор);Вых. данные: *p { struct EL_SP *pt, //Указатель включаемого элемента *k, *j; //указатели очередного и предыдущего элементов списка pt=(struct EL_SP*)malloc(sizeof(struct EL_SP)); //выделение памяти для нового элемента списка strcpy(pt->id,t_id); if(*p==NULL || strcmp(pt->id,(*p)->id)<0) { pt->sled=*p;*p=pt; } else { k=*p; while (k!=NULL&&strcmp(pt->id,k->id)>=0) {j=k; k=k->sled; } j->sled=pt; pt->sled=k; } } void PechSp ( struct EL_SP *p) { struct EL_SP *i; printf ("\n Rezultat:\n"); for ( i=p;i!=NULL; i=i->sled) puts(i->id); } /*---------------------------------------------*/ /* OSNOVNAYA PROGRAMMA */ /*---------------------------------------------*/ int main() { struct EL_SP *p; //указатель начала списка unsigned n; //количество идентификаторов unsigned i; //параметр цикла char t_id[MAXDL]; //текущий идентификатор printf ("\nVvedite chislo identifikatorov\n n="); scanf("%u",&n); getchar(); p=NULL; printf("Vvedite identifikatory"); printf("(posle kazhdogo nazhimayte klavishu )\n"); for (i=1;i<=n;i++) { gets(t_id); Vkl(&p,t_id); //включение идентификатора в список } PechSp(p); printf("\n\nDlya zaversheniya nazhmite lyubuyu klavishu\n"); getch(); }