проверте коректность проги(списки)
Добавлено: 27 фев 2011, 22:14
1. очистить список
2.добавить елементи в конец списка
3.получить указатель на и-тий елемент списка
4. перестановка местами елементов списка
5.вставить елемент в список перед вызначеным елементом
6. печать елементов списка на екран
вот код- ошибок нет, но она не работает так как нужно
помогите.
2.добавить елементи в конец списка
3.получить указатель на и-тий елемент списка
4. перестановка местами елементов списка
5.вставить елемент в список перед вызначеным елементом
6. печать елементов списка на екран
вот код- ошибок нет, но она не работает так как нужно
помогите.
Код: Выделить всё
#include "stdafx.h"
#include <time.h>
#include "stdio.h"
#include <stdlib.h>
#include <string.h>
#include <malloc.h>
struct list
{
char name [20];
char secondname[20];
list* next;
list* prev;
};
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));
if(!nov){
printf("can not allocate memory");
return NULL;
}
printf("vvedid dannue");
scanf("%s,%s",&(nov->name),&(nov->secondname));
nov->next=first;
first=nov;
return first;
}
list* poc( list* head, int num )
{
if (!head)
return NULL;
list*n = head;
for( int i=1; (i<num) && (n->next); i++, n=n->next);
return n;
}
list* per(list*p)
{ list*n=p;
if(p->next)p->next=p->prev;
n->prev=n->next;
return p;
}
list* dob(list*vuz_el)
{
list* n;
n=(list*) malloc(sizeof(list));
if(!vuz_el) return n;
if(vuz_el->next)
n->next=vuz_el->next;
vuz_el->next=n;
return n;
}
void print(list* first)
{
list*wwe;
wwe=first;
while(wwe)
{
printf("%s,%s\n",wwe->name,wwe->secondname);
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));
}
}
list *AddL(list *p)
{
list *n = new list;
memset( n, 0, sizeof(list) );
if(!p) return n;
n->next = p->next;
n->prev = p;
p->next = n;
return n;
}
int main ()
{
int q;
printf("vvedit kilkist student\n");
scanf("%d",&q);
list *head, *tail;
head = AddL(NULL);
tail = AddL(AddL( head ));
for(list*p=head;q>1;q--)
p=AddL(p);
for(list*p = head; p; p = p->next)
fill_list(p);
list fx;
list* o=poc( head, 2 );
list* z=dob(&fx);
list* r=dod(&fx);
list* s=per(&fx);
list* p=clear(&fx);
print(head);
int n, i, k,sum=0;
printf("vvedit rozmir masuva\n");
scanf("%d",&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;
}