ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Дан файл целых чисел компоненты которого различны, сформировать циклический линейный список, задать число n и удалять n-ый элемент в списке пока не останется 1//подключение внешних модулей #include "stdio.h" #include "string.h" #include "io.h" #include "fcntl.h" #include <sys/stat.h> //описание структуры списка struct list{ int el; list *next; }; int fh;//заголовок файла void main()//the main function { fh = -1;//file handle set -1(error) list *fst,*tek;//создаем элементы списка fh = _open("tmp.file", _O_WRONLY|_O_CREAT); //создаем типизированный файл printf("vvedite chislo i = "); int i; scanf("%d",&i); do{//заполняем файл пока не введем 999 int j = _write(fh,&i,sizeof(int));//запись if(j<=0) printf("error write");// если не удалось записать printf("vvedite chislo(konechnii element 999) i = "); scanf("%d",&i);//получаем переменную из вх потока }while(i!=999); _close(fh);//закрываем файл fh = _open("tmp.file",_O_RDONLY);//открываем для чтения bool is_first = true;//флаг для создания первого ел-та printf("QUEUE:\n"); while(!_eof(fh))// пока не конец файла {//читаем ф-л и создаем циклический список _read(fh,&i,sizeof(int)); printf("%d ",i); list * ll = new list; ll ->el = i; if(is_first){ is_first =!is_first; ll ->next = ll;//pointer to itself fst = ll; tek = ll; }else{ ll ->next = fst; tek ->next = ll; tek = ll; }}// end of list construction printf("\nVvedite nomer elementa dla udalenia(>0) j= "); int j,c=0; scanf("%d",&j); list * dd = fst; list *prew = fst; //удаляем элемент с заданным числом из списка while(dd->next!=dd){//пока не ост-ся один елемент if(c == j){//удаление если счетчик равен заданному числу c = 0; prew->next = dd->next; delete dd; printf("delete\n"); }else{//иначе идем дальше prew = dd; dd = dd->next; c++; } }printf("Ostavsheesa chislo n = %d",dd->el);//выводим }//оставшееся число
Не нашли, что искали? Воспользуйтесь поиском:
|