Нужно реализовать однонаправленый связной список. Я сделал функцию которая проверят не пуст ли список(100) и функцию добавления нового елемента(106). Но почему то всё равно список пустой(90). Вот код
| Код |
#include <stdlib.h> #include <string.h> #include <dos.h> #include <conio.h> #include <malloc.h> #include <stdio.h>
struct region{ unsigned int coder; char title[30]; struct region* next; }; struct oblast{ unsigned int codeo; unsigned int coder; char title[30]; struct oblast* next; }; struct naftobaza{ unsigned int coden; unsigned int codeo; char title[30]; unsigned int count_rezer; double capacity; struct naftobaza* next; }; struct oblik { unsigned int coden; unsigned int count_zavezenux; int date; int month; int year; struct oblik* next; }; struct dyn_region { struct region* head; struct region* tail;
} Regions;
int q;
//проверка на пустоту int chk_empty(dyn_region &l); //Добавления нового елемента void addRegion(struct dyn_region &l,struct region* reg); int main(void) { //Main clrscr(); //Main identificators int stop=0,i=1;
/*struct region* next_region=NULL;
struct oblast* head_oblast=NULL; struct naftobaza* head_naftobaza=NULL; struct oblik* head_oblik=NULL; */ // struct region curreg; Regions.head=NULL; Regions.tail=NULL;
printf("========================\n\n");
printf("Vedit spusok regioniv \n"); printf("vvedit \"-1\" v cod dla 3averwenna vvody \n"); while(!stop){ region* current=(region*)calloc(1,sizeof(struct region)); current->coder=i; printf("Vvedit nazvy\n"); scanf("%30s",current->title); addRegion(Regions,current); i++; printf("continue input [y\\n] ?\n"); char c=getch(); if(c=='y') stop=0;else if(c=='n')stop=1; else stop=0; }
//exit
printf("\n spisok - %d ",chk_empty(Regions)); //Всегда 0 printf("Press any key to exit...\n");
q=getch(); ////// return 0; }
//functin int chk_empty(dyn_region &l){ if(l.head==NULL) return 1; else return 0;
} void addRegion(struct dyn_region &l,struct region* reg){
reg->next=NULL; if(chk_empty(l)) l.head=reg; else l.tail->next=reg; l.tail=reg;
// free(reg);
}
|
|