![]() |
Помогите с лабораторными работами!!!!!!HELP!!!
Работа со списками.
1) Поменять местами первый и указанный элементы. 2)Определить четность элементов списка. |
Lebronmax2, Основы программирования для информатиков и инженеров: Глава 8. ДИНАМИЧЕСКОЕ РАСПРЕДЕЛЕНИЕ ПАМЯТИ. РАБОТА СО СПИСКАМИ.
Если после прочтения будут непонятные моменты, спрашивайте, цитируя оригинал. |
Блин я вообще туго со списками!!! Но у меня есть код для замены первого и последнего!!!!
#include<stdio.h> #include<stdlib.h> #include<conio.h> #include<alloc.h> void enter(void); void print(void); void del(void); void change(void); struct List *find(int a); struct List { int data; struct List *next; }; struct List *start; struct List *current,*last; void main() { start=NULL; label: switch(menu_select()) { case 1: enter(); break; case 2: print(); break; case 3: find(3); break; case 4: del(); break; case 5: exit(0); } goto label; getch(); } int menu_select(void) { char s[80]; int c; printf("Menu programy\n"); printf("1. Vvod novogo slova\n"); printf("2. Otobrazhenie spiska\n"); printf("3. Poisk slova\n"); printf("4. del\n"); printf("5. Exit\n"); printf("6. ch\n"); do { printf("\nVash vybor: "); scanf("%d",&c); } while(c<0||c>5); return c; } void enter(void) { current=(struct List*)malloc(sizeof(struct List)); printf("\nVvedite \n"); scanf("%d",¤t->data); current->next=NULL; //указатель на следующий элемент=0 if (start==NULL) start=current; //если первый - текущий=первый else //предыдущий должен указывать на новый { last=start; while(last->next) last=last->next; last->next=current; } } void print() { current=start; while(current) { printf("\n%d ",current->data) ; current=current->next; } } struct List* find(int a) { current=start; while(current!=NULL) { if (current->data==a) return current; current=current->next; } return NULL; } void del() { struct List *pred; current=find(3); if (current==NULL) { printf("\nNe naideno \n");; } else { if (current==start) { start=start->next; free(current); } else { pred=start; while (pred->next!=current) pred=pred->next; pred->next=current->next; free(current); } } } void change(); { struct List *ch; if(start) { current=start; } } /* int main() { int i=0; struct List *current; struct List *last; start=NULL; /*for(i=0;i<5;i++){ add();} print(); printf("\n%s",find()); getch(); return 0; } */ Переделайте!!! |
Вже все вирішив!!!!!
|
Время: 17:58. |
Время: 17:58.
© OSzone.net 2001-