ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Дан файл символов. Сформировать линейный список. Просмотреть линейный список из головы и составить из// символов строку. #include <fcntl.h> #include <sys/types.h> #include <sys/stat.h> #include <io.h> #include <stdio.h> #include <stdlib.h> #include <string.h>
struct list { char info; list *prev; list *next; list() { prev=NULL; next=0; info=0; } };
void insert_post(list *, char); void printList(list *); char * createString(list *);
list *first=0; list *last=0;
char buffer[100];
void main(void) { int fh; unsigned int i, nbytes = 100, bytesread; list *p;
/* Open file for input: */ if((fh = _open("symbol.dat", _O_RDONLY)) == -1) { perror("open failed on input file");
exit(1); }
/* Read in input: */ if((bytesread = _read(fh, buffer, nbytes)) <= 0) { perror("Problem reading file"); exit(1); }
for(i=0; i<bytesread; i++) { if(buffer[i]==0x0a) continue; p=last; insert_post(p, buffer[i]); } printList(first);
printf("The string of item is %s\n", createString(first));
_close(fh); }
/* вставка элемента после текущего */ void insert_post(list *q, char value) { list *p = new list; if (q!= 0) { p->next = q->next; p->prev = q; } p->info = value; if (q == 0) { first = p; last = p; } else { if (q->next == 0) last = p; else q->next->prev = p; q->next = p; } }
char * createString(list *q) { char str[100]; memset(str,0,100); unsigned int cnt = 0;
while(q!=NULL) { cnt += sprintf(str+cnt, "%c", q->info); q = q->next; } return str; }
/* Print the list */ void printList(list *q) { if (q == 0) printf("List is empty.\n\n"); else { printf("The list is:\n");
while (q!= 0) { printf("%c-> ", q->info); q = q->next; } printf("NULL\n\n"); } }
Не нашли, что искали? Воспользуйтесь поиском:
|