Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<stdio.h>
- #include<string.h>
- #include<stdlib.h>
- struct DATE
- {
- int date = 0;
- DATE *next = NULL;
- DATE *prev = NULL;
- };
- DATE * addSTRUCT(int data)
- {
- DATE *item = (DATE*)malloc(sizeof(DATE));
- item->date = data;
- item->next = NULL;
- item->prev = NULL;
- return item;
- }
- void push(DATE **first, int data)
- {
- DATE *item = (DATE*)malloc(sizeof(DATE));
- item->date = data;
- item->next = *first;
- item->prev = NULL;
- (*first)->prev = item;
- *first = item;
- }
- void add_to_the_end(DATE **last, int data)
- {
- DATE *item = (DATE*)malloc(sizeof(DATE));
- item->date = data;
- item->next = NULL;
- item->prev = *last;
- (*last)->next = item;
- *last = item;
- }
- void add(DATE **data_pr, DATE **data_n, int data)
- {
- DATE *item = (DATE*)malloc(sizeof(DATE));
- item->date = data;
- item->prev = *data_pr;
- item->next = *data_n;
- (*data_n)->prev = item;
- (*data_pr)->next = item;
- }
- void pop(DATE **first)
- {
- DATE *item = (*first)->next;
- ((*first)->next)->prev = item;
- free(*first);
- *first = item;
- }
- void association(DATE **first, DATE **second) {
- do {
- DATE *tmp = (*first)->next;
- DATE *item = (*second)->next;
- (*first)->next = *second;
- ((*first)->next)->prev = *first;
- ((*first)->next)->next = tmp;
- tmp->prev = ((*first)->next)->next;
- *first = tmp;
- *second = item;
- } while ((*second)->next != NULL);
- }
- DATE * gotoLast(DATE * d){
- //функция нахождения последнего элемента в структуре
- if (d->next != NULL){
- return gotoLast(d->next);
- }
- }
- int saveDATE(DATE * d, char * s){
- //d - первый элемент
- //s - полный путь
- FILE *fp;
- fp = fopen(s, "w+");
- DATE * tmp = (DATE *) malloc(sizeof(DATE));
- tmp = gotoLast(d);
- //записываем первый элемент который всегда существует
- printf("%i\n",d->date);
- while (d->prev != NULL){
- // и предыдущие
- d = d->prev;
- printf("%i\n",d->date);
- }
- fclose(fp);
- }
- DATE * loadDATA(char * s){
- //s - полный путь до файла
- DATE * tmp = (DATE *) malloc(sizeof(DATE));
- DATE * tmp1 = (DATE *) malloc(sizeof(DATE));
- tmp->next = NULL;
- tmp->prev = NULL;
- FILE *fp;
- fp = fopen(s, "r");
- fscanf(fp, "%i", tmp->date);
- while (fscanf(fp, "%i", tmp1->date) != EOF){
- //считываем строки пока нет конца файла
- tmp1->next = NULL;
- tmp->next = tmp1;
- tmp1->prev = tmp;
- tmp = tmp1;
- }
- return tmp;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement