Помогите пожалуйста разобраться в программе,надо защитить лабу.Желательно каждую функцию... Особенно интересуют " ->"
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
#include<time.h>
struct list{// Описание струкутры list
char data;// поле хранения символа
struct list *link;//поле хранения адерса на следующий элемент
};
void create_list(list **);//описание прототипов функции создания списка
void preview_list(list *);// просмотра
void clear_memory(list *);//очистки памяти
void main()
{ list *p1=NULL,*p2=NULL,*p=NULL;//объявление переменных
list *t1,*t2,*q1,*q2,*tp;
//*t1,t2,q1,q2 вспомогательные указатели
//p1 указатель на список пропсных букв
//P2 указатель на список строчных букв
clrscr();
create_list(&p);//вызов функции создания списка
puts("Start");
preview_list(p);//вызов функции просмотра
tp=p;
//Создание двух списков на основе исходного
while (tp){
if (tp->data<='Z'){
t1=new(list); t1->data=tp->data; t1->link=NULL;
if (p1==NULL) {p1=t1; q1=t1;}
else {q1->link=t1; q1=t1;}
}
else{
t2=new(list); t2->data=tp->data; t2->link=NULL;
if (p2==NULL) {p2=t2; q2=t2;}
else {q2->link=t2; q2=t2;}
}
tp=tp->link;
}
//Вывод списка отрицательных элементов
puts("\nPropisnie");
preview_list(p1);
//Вывод списка положительных элементов
puts("\nStrocnie");
preview_list(p2);
//Очистка памяти
clear_memory(p);clear_memory(p1);clear_memory(p2);
}
void create_list(list **top)
{ int i,n;
char ch;
list *t,*q;
printf("Vvedite kolicestvo elementov\n");
printf("n="); scanf("%d",&n);
//Создание первого элемента списка
printf("Vvedite bukvi\n");
printf("data=");ch=getche();puts("");
t=new(list);
t->data=ch;
t->link=NULL;
*top=t; q=t;
//создние и добавление в список последующих элементов
for(i=1; i<n; i++)
{
printf("data=");
ch=getche();
puts("");
t=new(list); t->data=ch; t->link=NULL;
q->link=t; q=t;
}
}
void preview_list(list *top)
{
list *t;
t=top;
//Вывод списка на экран
while (t)
{ printf("%c",t->data);
t=t->link;
}
getch();
}
void clear_memory(list *top)// функция очистки памяти
{ list *t;
t=top;
while(t)
{
top=top->link;
delete(t);
t=top;
}
}
Надо на основе заданного списка символов сформировать два других, помещая в первый из них строчные, а во второй пропистные из исходного списка
списки.Прокомментируйте детально,как работает программа...
Модератор: Злобный
Тебе нужно что именно? описать работу каждой функции и сделать анализ всех параметров и возвращаемых значений? или для начала самому понять о чём речь идёт в каждой функции?
-> используется для доступа к полю структуры с использованием указателя на неё......
к примеру
// создание объекта структуры list (List) и указателя на
структуру типа list (pList)
struct list List, *pList;
тогда обращение к полю data,( а у тебя именно так называется поле) структуры будет осуществляться так:
для объекта: List.data для указателя: pList->data
-> используется для доступа к полю структуры с использованием указателя на неё......
к примеру
// создание объекта структуры list (List) и указателя на
структуру типа list (pList)
struct list List, *pList;
тогда обращение к полю data,( а у тебя именно так называется поле) структуры будет осуществляться так:
для объекта: List.data для указателя: pList->data
Злобный,
Абсолютно правильное и уместное дополнение.....я писал в спешке и я имел в виду именно его случай......с
использованием структур....
Да и не думаю что так глубоко стоит копать..... Обычно
преподаватели ловят на том, что студенты лезут в дебри сами.... А потом не в
силах объяснить, что такое метод к примеру.... Хотя это уже от преподавателя зависит....)
Абсолютно правильное и уместное дополнение.....я писал в спешке и я имел в виду именно его случай......с
использованием структур....
Да и не думаю что так глубоко стоит копать..... Обычно
преподаватели ловят на том, что студенты лезут в дебри сами.... А потом не в
силах объяснить, что такое метод к примеру.... Хотя это уже от преподавателя зависит....)
grez,
Хм....тут писанины много.....вообще...чтобы понять прогу нужно её более понятно представить перед собой.....То есть удобней анализировать, когда в каждой строке по одной операции.....а когда всё в куче- сложно разобраться....всегда проще понять как и что происходит делая наброски для себя на листке и идя таким образом по ходу программы и анализируя.....
Извини....было бы лишнее время, помог бы.... Постарайся сам....Функции то не сложные....Правда не совсем рационально сделано, но да ладно....
Ты на каком уровне то находишься? Совсем плох?
Хм....тут писанины много.....вообще...чтобы понять прогу нужно её более понятно представить перед собой.....То есть удобней анализировать, когда в каждой строке по одной операции.....а когда всё в куче- сложно разобраться....всегда проще понять как и что происходит делая наброски для себя на листке и идя таким образом по ходу программы и анализируя.....
Извини....было бы лишнее время, помог бы.... Постарайся сам....Функции то не сложные....Правда не совсем рационально сделано, но да ладно....
Ты на каком уровне то находишься? Совсем плох?