![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() |
Matadora |
![]()
Сообщение
#1
|
Школьник ![]() Группа: Продвинутые Сообщений: 16 Регистрация: 4.9.2010 Город: Ukraine Учебное заведение: ВНТУ Вы: студент ![]() |
задали в самом начале учебы после долгого отдыха задачу:
создать программу на С, в которой будут работать функции добавления и удаления следующего элемента стека вот написала код, но он не хочет работать, помогите плиз Код #include<stdio.h> #include<stdlib.h> #define MES_LEN 10 typedef struct inform { int index; char message[MES_LEN]; } INFORM; typedef struct list_elem { INFORM inform; struct list_elem *next; } LEL; LEL* PutInStack(INFORM data); void PrintList(void); LEL* GetFromStack(INFORM* pdat); LEL *list; int main(void) { LEL *end=NULL; puts("\t\t Vhidni dani:"); do { end=PutInStack(end); } while (end!=NULL); puts("\n\n\t Vvedeno dani v stek:"); PrintList(); GetFromStack(); PrintList(); return 0; } void PrintList(void) { LEL *pel=list; while(pel!=NULL) { printf("\n%-8d%-70s", pel->inform.index, pel->inform.message); pel=pel->next; } } LEL* PutInStack(INFORM data) { LEL *pnew; pnew=(LEL*)malloc(sizeof(LEL)); pnew->inform=data; pnew->next=list; list=pnew; return pnew; } LEL* GetFromStack(INFORM* pdat) { LEL *ph=list; if (ph==NULL) return NULL; *pdat=ph->inform; list=list->next; free(ph); return list; } |
![]() ![]() |
Matadora |
![]()
Сообщение
#2
|
Школьник ![]() Группа: Продвинутые Сообщений: 16 Регистрация: 4.9.2010 Город: Ukraine Учебное заведение: ВНТУ Вы: студент ![]() |
тихо-ша Х) это начало второго курса
мы по лекциям в прошлом году само понятие учили в скольз, но как с ним работать не учили, практических занятий не было я вот нашла у знакомого такую программку, по ходу оно, зацените # include <stdio.h> # include <stdlib.h> struct stackNode { int data; struct stackNode *neatPtr; }; typedef struct stackNode STACKNODE; typedef STACKNODE *STACKNODEPTR; void push (STACKNODEPTR*,int); int pop (STACKNODEPTR*); int isEmpty (STACKNODEPTR); void printStack(STACKNODEPTR); void instructions(void); main() { STACKNODEPTR stackPtr=NULL; int choice,value; instructions(); printf("? "); scanf("%d",&choice); while (choice!=3) { switch(choice) { case 1: printf("Enter an intager: "); //запихиваем в стех scanf("%d",&value); push(&stackPtr,value); printStack (stackPtr); break; case 2: //берем из стека if (!isEmpty(stackPtr)) printf("The popper value is %d.\n",pop(&stackPtr)); printStack (stackPtr); break; default: printf("Invalid choice.\n\n"); instructions(); break; } printf("? "); scanf("%d",&choice); } printf("End of r.\n"); return 0; } // Распечатка инструкций void instructions (void) { printf("Enter choice:\n" "1 to push a value on the stack\n" "2 to pup a value off the stack\n" "1 to end program\n" ); } // Помещаем в стек void push (STACKNODEPTR *topPtr,int info) { STACKNODEPTR newPtr; newPtr=malloc(sizeof(STACKNODE)); if (newPtr!=NULL) { newPtr->data=info; newPtr->neatPtr=*topPtr; *topPtr=newPtr; } else printf("%d not inserted. No memory available.\n",info); } // Берем из стека int pop (STACKNODEPTR *topPtr) { STACKNODEPTR tempPtr; int popValue; tempPtr=*topPtr; popValue=(*topPtr)->data; *topPtr=(*topPtr)->neatPtr; free(tempPtr); return popValue; } // распечатка стека void printStack(STACKNODEPTR currentPtr) { if (currentPtr==NULL) printf("The stack is empty.\n\n"); else { printf("the srack is:\n"); while (currentPtr!=NULL){ printf("%d->",currentPtr->data); currentPtr=currentPtr->neatPtr; } printf("NULL\n\n"); } } // пустой ли стек int isEmpty(STACKNODEPTR topPtr) { return topPtr==NULL; } |
![]() ![]() |
![]() |
Текстовая версия | Сейчас: 28.5.2025, 0:33 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru