Здравствуйте, гость ( Вход | Регистрация )
| Matadora |
4.9.2010, 16:40
Сообщение
#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 |
14.9.2010, 18:07
Сообщение
#2
|
|
Школьник ![]() Группа: Продвинутые Сообщений: 16 Регистрация: 4.9.2010 Город: Ukraine Учебное заведение: ВНТУ Вы: студент |
ну словом в предыдущем коде были ошибки, вот правильный код, работающий )
(ух и долго же я билась над ним Х))) #include <stdio.h> #include <stdlib.h> #include <alloc.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!=0) { 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" "0 to end program\n" ); } void push(STACKNODEPTR *topPtr, int info) / { STACKNODEPTR newPtr; newPtr=(STACKNODEPTR) 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 stack is:\n"); while(currentPtr!=NULL) { printf("%d->",currentPtr->data); currentPtr=currentPtr->neatPtr; } printf("NULL\n\n"); } } int isEmpty(STACKNODEPTR topPtr) { return topPtr==NULL; } |
Matadora операции над стеком в C 4.9.2010, 16:40
Vahappaday Хм... да много чего неправильного получается, дава... 4.9.2010, 17:21
Matadora нет, не Волынский, а Винницкий Х)
спасибо за сове... 4.9.2010, 17:24
Matadora будете смеяться, у нас еще не выкладывали материал... 4.9.2010, 17:34
Vahappaday Это немножко другой стек... Стек на массиве. Стати... 4.9.2010, 17:50
Vahappaday об указателях понятие дали вам или нет?
просто бе... 4.9.2010, 18:48
Matadora будете смеяться - нам ничего не дали, первые же дн... 4.9.2010, 20:19
Vahappaday 1 курс?!!! ничего не объяснив, сказали... 4.9.2010, 21:31
julia_lisha да ну на 1 курсе в начале стеки))))) нееее))))))))... 5.9.2010, 9:50
Matadora тихо-ша Х) это начало второго курса
мы по лекциям ... 5.9.2010, 13:22
Vahappaday Советую сначала понять, зачем оно надо, или хотя б... 5.9.2010, 14:43
Matadora спасибо за наводку, теперь-то я точно ее сделаю Х) 5.9.2010, 15:04
julia_lisha :thumbsup: 16.9.2010, 12:14
Matadora знаете как радовалась когда начала работать? ахаха... 17.9.2010, 6:10![]() ![]() |
|
Текстовая версия | Сейчас: 20.4.2026, 3:25 |
Зеркало сайта Решебник.Ру - reshebnik.org.ru