списки

  • Автор темы kaffein
  • Дата начала
K

kaffein

Гость
#1
1. очистить список
2.добавить елементи в конец списка
3.получить указатель на и-тий елемент списка
4. перестановка местами елементов списка
5.вставить елемент в список перед вызначеным елементом
6. печать елементов списка на екран
Вот функции кажется прописал, но не знаю как в мейне все ето вызвать. И как список заполнить, он у меня вечный получился, исправте ошибки
C++:
#include "stdafx.h"
#include <time.h> 
#include "stdio.h"
#include <stdlib.h>
#include <string.h>

typedef struct maneg
{
char name [20];
char secondname[100];
int age;
maneg* next;
maneg* prev;
}list;
list *clear( list*h )
{
if(!h) return NULL;
list*n;
for(n=h->next;n;n=n->next )
{
if(h) free(h);
h=n;
}
if(h) free (h);
return 0;
}

list* dod(list* first)
{
list* nov;
nov = (list*) malloc(sizeof(list));
printf("vvedid dannue");
scanf("%s,%s,%i",nov->name,nov->secondname,nov->age);
nov->next=first;
first=nov;
return first;
}
list* poc(list* p)
{
int i,sum=0;
printf("nom pos");
scanf("%i",&i);
for( list*n=p;n->next;n=n->next)
sum++;
if(sum==i)
return p;
}
list* per(list*p)
{
if(p->next)p->next=p->prev;
p->prev=p->next;
return p;
}
list* dob(list*vuzel)
{
list* n;
n=(list*) malloc(sizeof(list));

if(!vuzel) return n;
if(vuzel->next) n->next=vuzel->next;
vuzel->next=n;
return n;
}
void print(list* first)
{
list*wwe;
wwe=first;
while(wwe)
{
printf("%s,%s,%i\n",wwe->name,wwe->secondname,wwe->age);
wwe=wwe->next;

}


}
void fill_list(list*p)
{
for(;p;p=p->next)
{
printf(" enter name of student\n");
scanf("%s",p->name);
printf("enter secondname of student\n");
scanf("%s",p->secondname);
printf(" enter age of student\n");
scanf("%i",p->age);
}
}
list *Add(list *p)
{
list *n = new list;
memset( n, 0, sizeof(list) );
if(!p) return n;

n->next = p->next;
p->next = n;
n->prev = p;
return n;
}


int main ()

{	
int q;		 
printf("vvedit q\n");
scanf("%i",&q);
list *head = Add( NULL );

fill_list(head);

int n, i, k,sum=0;
printf("vvedit rozmir masuva\n");
scanf("%i",&n);
int *a=new int [n];
srand(time(NULL));
for (i=0; i<n; i++)
a[i]=rand()%20; //заполнение массива случайными числами от 0 до 19

for (k=0; k<n; k++)
sum+=a[k];
printf("sum=%i",sum);  
delete [] a;
return sum;

}
 
R

RiCrO

Гость
#2
Создавай структуру и используй оператор switch с его case. Делов то...
 
R

RiCrO

Гость
#4
Так тебе для main нужно или для списка? Определись... Список будет отдельно. В main помести структуру с вызовом функций.