Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Общие вопросы > Списки нa C


Автор: Neox_GeForce 24.5.2010, 15:53
Нужно реализовать однонаправленый связной список.
Я сделал функцию которая проверят не пуст ли список(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);

}
 

Автор: Neox_GeForce 24.5.2010, 18:33
Вообщем я удалил тот метод. Тема закрыта

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)