octo96
Newbie | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Напишыте пожалуста коментарий к етой програме, очень нужно. Код: #include <conio.h> #include <stdio.h> #include <math.h> #include <stdlib.h> struct el { int val; el*next,*prev; }; struct stack { el*cur,*mass; int n,stackempty; stack(); insert(int); release(); reverserelease(); }; stack::stack() { n=0; cur=mass=NULL; stackempty=1; } stack::reverserelease() { int ret; if(n==0) return 0; ret=mass->val; if(mass->next!=NULL){ mass=mass->next; delete mass->prev; } else delete mass; n--; if(n==0) stackempty=1; return ret; } stack::release() { int ret; if(n==0) return 0; ret=cur->val; cur=cur->prev; if(cur==NULL) delete mass; else delete cur->next; n--; if(n==0) stackempty=1; return ret; } stack::insert(int ins) { stackempty=0; if(n==0){ mass=new el; mass->prev=NULL; mass->next=NULL; mass->val=ins; cur=mass; n++; return 0; } cur->next=new el; cur->next->prev=cur; cur->next->next=NULL; cur->next->val=ins; cur=cur->next; n++; return 0; } void bitsort(int*p,int*numb,int len,int base) { int i,j,k,step; int bit,cbit; switch(base) { case 512: step=9; break; default: printf("Error in sorting base: %d",base); return; } stack*st=new stack[base]; for(i=0;i<sizeof(int)*8;i=i+step) { cbit=(base-1)<<i; for(j=0;j<len;j++) { bit=p[numb[j]]&cbit; bit=bit>>i; st[bit].insert(numb[j]); } k=0; for(j=0;j<base;j++) { while(!st[j].stackempty) { numb[k]=st[j].reverserelease(); k++; } } if(k!=len) { printf("Error occured while sorting array"); return; } } delete st; } void main() { clrscr(); int z = 0; int *p, *sorted, n = 0, i = 0, j = 0; stack st; unsigned int n_el = 0, max = 1024; n = 10; p = new int[n]; sorted = new int[n]; srand((unsigned int)time(0l)); for(i = 0; i < n; i++) { p[i] = rand(); sorted[i] = i; } for(i = 0; i < n; i++) { printf("%d\r\n",p[sorted[i]]); } printf("Press any key to begin sorting\r\n"); getch(); bitsort(p, sorted, n, 512); for(i = 0; i < n; i++) { printf("%d\r\n",p[sorted[i]]); } delete p; delete sorted; printf("Press any key to continue"); while (!getch()); } | Функцию main() описывать не нужно | Всего записей: 13 | Зарегистр. 03-12-2009 | Отправлено: 18:11 19-01-2010 | Исправлено: octo96, 20:24 19-01-2010 |
|