|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
18.12.2009, 01:11 | #1 |
Регистрация: 18.12.2009
Сообщений: 4
|
Бинарное дерево??
Вот код, скажите мне что это такое и с чем его едят? Мне конкретно нужно знать, бинарное дерево это или нет)))
|
18.12.2009, 01:13 | #2 |
Регистрация: 18.12.2009
Сообщений: 4
|
#include "stdafx.h"
#include <conio.h> #include <stdlib.h> /////////////////// struct chel{ int num; char name[21]; char tel[13]; struct chel* next; }; char* cmd={"adddelfndshwhlpedtdla"}; char alf[]={"0123456789abcdefghijklmnopqrstuv wxyzABCDEFGHIJKLMNOPQRSTUVWXYZ "}; /////////////////// void output(char *buf); void dialog(); int input(int num,char* str,int lim); int ch_find(char c,char *buf,int n); int cmd_scan(char *str); void output_int(int x); int input_int(); void tk_add(chel* beg); void tk_del(chel* beg); void tk_fnd(chel* beg); void tk_shw(chel* beg); void tk_edt(chel* beg); void tk_dla(chel* beg); chel* aloc_mem(); chel* last_fnd(chel* beg); chel* num_fnd(chel* beg,int n); /////////////////// int _tmain(int argc, _TCHAR* argv[]) { dialog(); return 0; } /////////////////// void dialog() { chel *beg; beg=aloc_mem(); beg->num=0; int i,command; char str[4]; output("/n!!!Telephone book!!!/n----------------------------------------------------------------/n"); output("/nCommands:/n'add' - add friend/n'del' - remove friend/n'fnd' - find friend/n'shw' - show all friends/n'hlp' - get help/n'edt' - edit friend/n'dla' - delete all/n<ECS> - quit/n"); output("/n----------------------------------------------------------------/n"); do{ if(input(4,str,62)==-1)break; switch(command=cmd_scan(str)){ case 0: tk_add(beg); break; case 3: tk_del(beg); break; case 6: tk_fnd(beg); break; case 9: tk_shw(beg); break; case 12: output("/nCommands:/n'add' - add friend/n'del' - remove friend/n'fnd' - find friend/n'shw' - show all friends/n'hlp' - get help/n<ECS> - quit/n"); break; case 15: tk_edt(beg); break; case 18: tk_dla(beg); break; case 21: output("...No command!"); break; } output("/n----------------------------------------------------------------/n"); }while(1); } /////////////////// void output(char *buf) { if((*buf)=='/' && (*(buf+1))=='n'){ putch(char(13)); putch(char(10)); buf=buf+2;} if((*buf)==0)return; putch(*buf); output(buf+1); } /////////////////// int cmd_scan(char *str) { int i,j; for(j=0;j<21;j+=3){ for(i=0;i<3;i++){if(*(str+i)!=cmd[i+j])break;} if(i==3)break; } return j; } /////////////////// int input(int num,char* str,int lim) { int i; char c; for(i=0;i<num-1;i++){ c=getch(); if(c==char(13))break; if(c==char(27))return -1; if(ch_find(c,alf,lim)==-1){ i--; continue;} putch(c); (*(str+i))=c;} (*(str+i))=0; return i; } /////////////////// int ch_find(char c,char *buf,int n) { int i; for(i=0;i<n;i++)if(c==buf[i])return i; return -1; } ////////////////// void output_int(int x) { int i,y[16],a,j; i=-1; do{i++;}while((x=(x-(y[i]=x%10))/10)!=0); for(j=i;j>=0;j--)putch(char(y[j])+'0'); } /////////////////// void tk_add(chel* beg) { chel* cur; chel* last; last=last_fnd(beg); last->next=(cur=aloc_mem()); if(cur==NULL){ output("/n|ERROR: NOT ENOUGH MEMORY|/n"); return;} output("/n|ADD FRIEND|/n(push <ECS> to cancel)/n /nEnter name:"); if(input(21,cur->name,63)==-1){ output("/n|ADDING HAS BEEN CANCELED|/n"); return;} output("/nEnter telephone number:"); if(input(13,cur->tel,10)==-1){ output("/n|ADDING HAS BEEN CANCELED|/n"); return;} output("/n|FRIEND HAS BEEN ADDED SUCCESFUL|/n"); cur->num=last->num+1; } /////////////////// |
18.12.2009, 01:13 | #3 |
Регистрация: 18.12.2009
Сообщений: 4
|
void tk_del(chel* beg)
{ int n; chel *cur,*prev; tk_shw(beg); output("/n|DELETE FRIEND|/n(push <ECS> to cancel)/n /nEnter number:"); if((n=input_int())==-1){ output("/n|DELETING HAS BEEN CANCELED|/n"); return;} if(n<1 || n>last_fnd(beg)->num){ output("/n|ERROR: WRONG NUMBER|/n"); return;} cur=num_fnd(beg,n); prev=num_fnd(beg,n-1); prev->next=cur->next; while((prev=prev->next)!=NULL)prev->num--; free((void*)cur); output("/n|FRIEND HAS BEEN DELETED SUCCESFUL|/n"); } /////////////////// void tk_fnd(chel* beg) { char str[21]; chel *tmp; int i,j,n; output("/n|FIND FRIEND|/n(push <ECS> to cancel)/n /nEnter name:"); if((n=input(21,str,63))==-1){ output("/n|FINDING HAS BEEN CANCELED|/n"); return;} output("/n|LIST OF FRIENDS|/n /n"); for(i=1;i<=last_fnd(beg)->num;i++){ for(j=0;j<n;j++){if(str[j]!=(tmp=num_fnd(beg,i))->name[j])break;} if(j==n){ output(" "); output_int(tmp->num); output(" "); output(tmp->name); output(" "); output(tmp->tel); output("/n");} } output("/n|END OF LIST|/n"); } /////////////////// void tk_shw(chel* beg) { beg=beg->next; output("/n|LIST OF FRIENDS|/n /n"); while(beg!=NULL){ output(" "); output_int(beg->num); output(" "); output(beg->name); output(" "); output(beg->tel); output("/n"); beg=beg->next; } output("/n|END OF LIST|/n"); } //////////////////// void tk_edt(chel* beg) { int n; chel* tmp; tk_shw(beg); output("/n|EDIT FRIEND|/n(push <ECS> to cancel)/n /nEnter number:"); if((n=input_int())==-1){ output("/n|EDIT HAS BEEN CANCELED|/n"); return;} if(n<1 || n>last_fnd(beg)->num){ output("/n|ERROR: WRONG NUMBER|/n"); return;} tmp=num_fnd(beg,n); output("/n /nEnter name:"); if(input(21,tmp->name,63)==-1){ output("/n|EDIT HAS BEEN CANCELED|/n"); return;} output("/nEnter telephone number:"); if(input(13,tmp->tel,10)==-1){ output("/n|EDIT HAS BEEN CANCELED|/n"); return;} output("/n|FRIEND HAS BEEN EDITED SUCCESFUL|/n"); } //////////////////// void tk_dla(chel* beg) { int i; char x; output("/n|DELETE ALL FRIEND|/npush <ECS> to cancel and <ENTER> to delete:"); if((i=input(2,&x,0))==-1){ output("/n|DELETE HAS BEEN CANCELED|/n"); return;} for(i=last_fnd(beg)->num;i>0;i--)free(num_fnd(beg,i)); beg->next=NULL; output("/n|DELETE SUCCESFUL|/n"); } //////////////////// int input_int() { int rez,a[10],j,k,y,i; char c; i=0; rez=0; y=1; do{ c=getch(); if(c==char(27))return -1; if(ch_find(c,alf,10)!=-1){ putch(c); a[i]=(int)(c-'0'); i++;}}while(c!=13 && i<10); putch(c); for(j=0;j<i;j++){ for(k=0;k<j;k++)y*=10; rez+=a[i-1-j]*y; y=1;} return rez; } //////////////////// chel* aloc_mem() { chel* cur; if((cur=(chel*)malloc(sizeof(chel)) )==NULL)return NULL; cur->next=NULL; return cur; } //////////////////// chel* last_fnd(chel* beg) { while(beg->next!=NULL)beg=beg->next; return beg; } //////////////////// chel* num_fnd(chel* beg,int n) { int i; for(i=0;i<n;i++)if((beg=beg->next)==NULL)return NULL; return beg; } |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Бинарное дерево С++ | Olya90 | Помощь студентам | 1 | 20.10.2009 21:45 |
Бинарное дерево | Lazio | Общие вопросы C/C++ | 2 | 10.09.2009 20:31 |
Бинарное дерево | lubafffka | Общие вопросы C/C++ | 0 | 29.04.2009 12:28 |
Бинарное дерево | g0liath | Помощь студентам | 2 | 16.02.2008 23:54 |