Списки.Как работает прогр.,срочно!

  • Автор темы grez
  • Дата начала
Статус
Закрыто для дальнейших ответов.
G

grez

#1
Помогите пожалуйста разобраться в программе,надо защитить лабу.Желательно каждую функцию... Особенно интересуют " ->"


#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;
}

}
Надо на основе заданного списка символов сформировать два других, помещая в первый из них строчные, а во второй пропистные из исходного списка
 
M

mind

#2
думаю, что никто вам объяснять ничего не будет, если вы сами ничего не знаете.

могу только посоветовать полистать книжек каких...
а также, правила форума глянуть еще разок.
 
Статус
Закрыто для дальнейших ответов.