|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
19.12.2013, 22:00 | #1 |
Новичок
Джуниор
Регистрация: 19.12.2013
Сообщений: 1
|
Простая программа с очереддю и стеками
Задача состояло всё сделать в классах, кое как я умудрился это сделать со стеками однако с очередями оказалось труднее ,ошибок нет однако программка не работает подозреваю что всё дело в:
while(cur) { pr=cur;cur=cur->uk; } if(pr) pr->uk=now; else*q=now;} Но как мне всё связать? Вот сама программа: #include "stdafx.h" #include <stdio.h> #include <stdlib.h> #include <locale.h> #include <conio.h> //FILE *frz; #define Stack class stack //Stack{int inf;Stack*uk;}; FILE *f; #define Queue class queue //Queue {int info;Queue*uk;}; /*Stack { public: int inf; Stack*uk; void dops(Stack **s,int dat) { Stack *now; now=(Stack*)malloc(sizeof(Stack)); now->inf=dat; now->uk=*s; *s=now; } int uds(Stack **s,int*err) { Stack *old=*s; int old_inf=0; if(*s) { old_inf=old->inf;*s=(*s)->uk; free(old); *err=0; } else*err=1; return(old_inf); } int chts(Stack *s,int*err) {if(s) {*err=0; return s->inf; } else {fprintf(frz," free "); *err=1; return 0; }} }; */ Queue { public: int info; Queue*uk; void dop(Queue**q,int dat) { Queue*cur=*q; //точка на 1 элемент Queue*pr=0; //точка на ранний элемент Queue*now; //точка на новый элемент now=(Queue*)malloc(sizeof(Queue)); //готовка ОрМ now->info=dat; //данные в элементе now->uk=0; //последний элемент очереди while(cur) //поиск конца очереди на новый элемент { pr=cur;cur=cur->uk; } //работа в очереди if(pr) pr->uk=now; //на новый элемент else*q=now; //новый элемент явл. первым } int ud(Queue**q,int*err) { int val=0; Queue*old=*q; //старая точка на удаление элемента if(*q) { val=old->info; *q=(*q)->uk; free(old); *err=0; } else*err=1; return val; } int cht(Queue*q,int*err) { if(q) { *err=0; return q->info; } else { *err=1; printf(" free "); return 0; } } }; //Stack*s1,*s2; //Queue*q1,*q2; void main() { setlocale(LC_ALL,"Russian"); int err,er,i; // stack S,s; queue Q,q; //stack *s1,*s2; queue *q1,*q2; //s1=&S; s2=&s; q1=&Q; q2=&q; /*frz=fopen("con","w"); printf("Stack free?:\n"); printf("stack 1;inf=%d\n",S.chts(s1,&err)); printf("stack 2;inf=%d\n",s.chts(s2,&err)); printf("Stack s1: добавление, чтение\n"); for(i=12;i<16;i++) S.dops(&s1,i); printf("%15d%12d\n",i,S.chts(s1,&er r)); printf("Заполнение стека s2 элементами, удаленными из стека s1,\n" "и чтение их из стека s2:"); for(i=0;i<4;i++) s.dops(&s2,S.uds(&s1,&err)); printf("%5d",s.chts(s2,&err)); printf("\nСтек s2: считано удален\n"); for(i=0;i<4;i++) { printf("%15d",s.chts(s2,&err)); printf("%12d\n",s.uds(&s2,&err)); } printf("Проверка пустоты стеков:\n"); printf("стек 1;inf=%d\n",S.chts(s1,&err)); printf("стек 2;inf=%d\n",s.chts(s2,&err)); */ f=fopen("con","w"); printf("queue free?:\n"); printf("queue 1;info=%d\n",Q.cht(q1,&er)); printf("queue 2;info=%d\n",q.cht(q2,&er)); printf("queue q1:заполнение элементами:\n"); for(i=12;i<16;i++) { fprintf(f,"%d ",i); Q.dop(&q1,i); } printf("\n чтение 1-го элемента 1-й очереди:\n" "q1->info=%4d\n",Q.cht(q1,&er)); printf("заполнение 2-й очереди элементами, удаленными из 1-й:\n"); for(i=0;i<4;i++) { printf("%4d",Q.cht(q1,&er)); q.dop(&q2,Q.ud(&q1,&er)); } printf("\n чтение первого элемента очереди 2:", "q2->info=%d\n",q.cht(q2,&er)); printf("\n удаление и вывод значений, удаленных из 2-й очереди:\n"); for(i=0;i<4;i++) printf("%4d",q.ud(&q2,&er)); printf("\n проверка пустоты очередей:\n"); printf("\n очередь 1;info=%d\n",Q.cht(q1,&er)); printf("\n очередь 2;inf=%d\n",q.cht(q2,&er)); getch(); } Последний раз редактировалось Demetriusss; 19.12.2013 в 22:03. |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Простая Программа | govno | Фриланс | 8 | 06.02.2012 16:29 |
простая программа на Си | serrggeee | Общие вопросы C/C++ | 4 | 21.05.2011 22:59 |
Простая программа | russian-stalker | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 3 | 27.11.2010 22:52 |
Простая программа с очереддю(Queue,STL,C++) | Olya90 | Помощь студентам | 4 | 06.05.2009 23:30 |
Простая программа | Distr | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 15.11.2007 08:27 |