Показать сообщение отдельно

  #539  
Старый 27.12.2007, 23:56
Neovild
Познающий
Регистрация: 18.12.2007
Сообщений: 32
Провел на форуме:
614948

Репутация: 86
По умолчанию

Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 3х связные списки и т.д. потом) посмотрите на сами указатели, просто думаю a- массив, int *p=a -коряво или нет?
Код:
#include <stdio.h>
#include <stdlib.h>
void Add(int *a[], int *kol, int el);
int Del(int *a[], int *kol);
void Display(int *a[], int *kol);

void Add(int *a[], int *kol, int el)
{
     int *p=a;
     ++(*kol);
     *(p+*kol)=el;
}
int Del(int *a[], int *kol)
{
    if (*kol<=-1) return 0;
    int *p=a;
    --(*kol);
    *(p+*kol+1)=0;
    return 1;
}
void Display(int *a[], int *kol)
{
     printf("stack:");
     int i;
     for (i=0; i<=*kol; ++i) {
         printf("%i,", a[i]);
         }
     printf("\n");
}
int main(int argc, char *argv[])
{
    int a[100], el=0, kol=-1,i;
    int *p=a;
    while (1) {
          printf("1:add, -1:del, 0:exit. command=");
          scanf("%i",&i);
          if (i==0) break;
          if (i==1) {
                    printf("ELEMENT=");
                    scanf("%i",&el);
                    Add(a,&kol,el);
                    }
          if (i==-1) 
             if (!Del(a,&kol)) exit(1);
          Display(a,&kol);
          }	
  return 0;
}
 
Ответить с цитированием