
29.12.2007, 13:03
|
|
Флудер
Регистрация: 18.01.2005
Сообщений: 2,298
Провел на форуме: 13936387
Репутация:
1844
|
|
Сообщение от Neovild
Сейчас на С перехожу. Написал самое простое что есть- Стек написал (не думайте что я в алгоритмах не шарю, кучи Фибоначчи, 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;
}
Честно сказать, не в обиду конечно, но это самый тупой пример работы с указателями который я когда либо видел в жизни, нах... Кучи переменных, которые ты туда сюда тусуешь. Зачем заводить два указателя на один и тот же массив? Под настроение?
Последний раз редактировалось dinar_007; 29.12.2007 в 13:07..
|
|
|