Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.02.2011, 13:58   #1
ConverterDU
Новичок
Джуниор
 
Регистрация: 18.02.2011
Сообщений: 1
По умолчанию указатели

уважаемые прграммисты, помогите разобраться с указателями в С++. общий принцип я понимаю, но совместно с преподавателемнаписали программу, создающую список, все на указателях, не могу разобраться никак, начинающий я... пожалуйста напишите комментарии к каждой строке программы, чтои как происходит!!!

Код:
#include<stdio.h>
#include<stdlib.h>

typedef struct List
{
    float L_element; 
    struct List *next; 
} List_t ;


void fun_List (List_t **list) {
    List_t *
    a=(List_t *)malloc(sizeof(List_t));
    a->L_element=30; 
    a->next=NULL;
    List_t *p ;
    p=(List_t *)malloc(sizeof(List_t));
    p->L_element=20; 
    p->next=a;
    List_t *erste;
    erste=(List_t *)malloc(sizeof(List_t));
    erste->L_element=10; 
    erste->next=p;
    
    *list = erste; 
}
void fun_Print (List_t *head) {
    List_t *r = head;
    int j = 1;
     while(r != NULL) {
        printf("\n Element %d ist gleich %2.0f ", j++, r->L_element);
        r = r->next;
    }
}
int main(){
    List_t *list = NULL;
    fun_List (&list);
    fun_Print(list);
}

Последний раз редактировалось ACE Valery; 19.02.2011 в 12:14.
ConverterDU вне форума Ответить с цитированием
Старый 18.02.2011, 16:27   #2
yandzee
Пользователь
 
Регистрация: 07.12.2010
Сообщений: 13
По умолчанию

Код:
#include<stdio.h>
#include<stdlib.h>

typedef struct List
{
         float L_element; 
         struct List *next; 
} List_t ;   //объявляем структуру List как новый тип List_t


void fun_List (List_t **list)  //новая функция создания односвязного списка
{
     List_t * a=(List_t *)malloc(sizeof(List_t)); //выделение памяти для списка
     a->L_element=30; //заполняем структуру a
     a->next=NULL; // структура a - последняя в списке (она не на кого дальше не указывает (next=NULL))
     List_t *p ;  // еще одна структура
     p=(List_t *)malloc(sizeof(List_t)); // выделяем для нее память
     p->L_element=20;  // заполняем
     p->next=a; // эта структура указывает на память, где храниться структура a.
     List_t *erste; //еще одна структура
     erste=(List_t *)malloc(sizeof(List_t)); //выделяем память
     erste->L_element=10; //заполняем
     erste->next=p; // эта структура указывает на память, где храниться структура p.
// И того получается список
    erste
    |__
        p
        |__
            a
      *list = erste; // переданный в функцию аргумент указывает на область памяти, где хранится структура erste
}
void fun_Print (List_t *head)  //функция отображает список
{
     List_t *r = head; //новая структура, которая указывает на область памяти структуры, которая была передана в агрументе функции
     int j = 1;
     while(r != NULL)  // пока структура чем то заполнена
     {
          printf("\n Element %d ist gleich %2.0f ", j++, r->L_element); //вывод
          r = r->next; // теперь r указывает на следующую в памяти структуру
     }
}
int main()
{
     List_t *list = NULL;
     fun_List (&list);
     fun_Print(list); //все функции в действии
}
yandzee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
C++ (указатели). slim>>> Помощь студентам 8 03.03.2010 19:39
Указатели С++ MarihuanaP Помощь студентам 1 09.02.2010 17:06
указатели Артэс Общие вопросы C/C++ 11 07.02.2010 16:47
Указатели IceBreaker Общие вопросы C/C++ 9 05.02.2010 09:11
[C] массивы, указатели, двойные указатели. Iggel Общие вопросы C/C++ 5 05.05.2009 12:39