diff --git a/version0.4/nasal_list.cpp b/version0.4/nasal_list.cpp deleted file mode 100644 index 259f951..0000000 --- a/version0.4/nasal_list.cpp +++ /dev/null @@ -1,300 +0,0 @@ -#ifndef __NASAL_LIST_CPP__ -#define __NASAL_LIST_CPP__ - -#include "nasal_var.h" -#include "nasal_list.h" - -nasal_list::nasal_list() -{ - head=new nasal_list_unit; - head->list_var.type=VAR_NONE; - head->list_var.data=NULL; - head->next=NULL; -} -nasal_list::~nasal_list() -{ - nasal_list_unit *temp=head; - nasal_list_unit *this_node=NULL; - while(temp->next) - { - this_node=temp; - temp=temp->next; - delete this_node; - } - delete temp; -} -nasal_list& nasal_list::operator=(const nasal_list &p) -{ - nasal_list_unit *temp=head; - nasal_list_unit *this_node=NULL; - if(head->next) - { - temp=temp->next; - head->next=NULL; - while(temp->next) - { - this_node=temp; - temp=temp->next; - delete this_node; - } - delete temp; - } - temp=head; - nasal_list_unit *temp_p=p.head; - - while(temp_p->next) - { - temp_p=temp_p->next; - temp->next=new nasal_list_unit; - temp=temp->next; - temp->next=NULL; - temp->list_var=temp_p->list_var; - } - return *this; -} -void nasal_list::append(var& p) -{ - nasal_list_unit *temp=head; - while(temp->next) - temp=temp->next; - temp->next=new nasal_list_unit; - temp=temp->next; - temp->next=NULL; - temp->list_var=p; - return; -} -void nasal_list::setsize(const int list_size) -{ - nasal_list_unit *temp=head; - int cnt=0; - while(temp->next) - { - temp=temp->next; - ++cnt; - if(cnt==list_size) - { - nasal_list_unit *this_node=NULL; - nasal_list_unit *t=temp->next; - temp->next=NULL; - if(!t) - return; - while(t->next) - { - this_node=t; - t=t->next; - delete this_node; - } - delete t; - return; - } - } - while(cntnext=new nasal_list_unit; - temp=temp->next; - temp->list_var.type=VAR_NONE; - temp->list_var.data=NULL; - temp->next=NULL; - ++cnt; - } - return; -} -nasal_list nasal_list::subvec(const int list_begin=0,const int list_end=-1) -{ - nasal_list temp_list; - int cnt=-1; - nasal_list_unit *temp=head; - - int beg=list_begin; - int end=list_end; - if(list_end==-1) - { - int end_place=-1; - while(temp->next) - { - temp=temp->next; - ++end_place; - } - temp=head; - end=end_place; - } - while(temp->next) - { - temp=temp->next; - ++cnt; - if(beg<=cnt && cnt<=end) - temp_list.append(temp->list_var); - } - return temp_list; -} -var nasal_list::pop() -{ - nasal_list_unit *temp=head; - nasal_list_unit *this_node; - while(temp->next) - { - this_node=temp; - temp=temp->next; - } - this_node->next=NULL; - var temp_var=temp->list_var; - delete temp; - return temp_var; -} -nasal_list nasal_list::sort_list(const int sort_type,const int _cmp=1) -{ - nasal_list temp_list; - if(sort_type==SORT_INT) - { - nasal_list_unit *temp=head; - while(temp->next) - { - temp=temp->next; - if(temp->list_var.type!=VAR_LLINT) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be long int."<list_var.type!=VAR_LLINT) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be long int."<next; - while(first_temp_this->next) - { - node_this=first_temp_this; - second_temp_this=first_temp_this->next; - while(second_temp_this->next) - { - if(_cmp>0 && *((int *)node_this->list_var.data)>*((int *)second_temp_this->list_var.data))//from small to large - node_this=second_temp_this; - else if(_cmp<=0 && *((int *)node_this->list_var.data)<*((int *)second_temp_this->list_var.data))//from large to small - node_this=second_temp_this; - second_temp_this=second_temp_this->next; - } - if(_cmp>0 && *((int *)node_this->list_var.data)>*((int *)second_temp_this->list_var.data))//from small to large func(a,b) a-b - node_this=second_temp_this; - else if(_cmp<=0 && *((int *)node_this->list_var.data)<*((int *)second_temp_this->list_var.data))//from large to small func(a,b) b-a - node_this=second_temp_this; - if(node_this!=first_temp_this) - { - int t; - t=*((int *)first_temp_this->list_var.data); - *((int *)first_temp_this->list_var.data)=*((int *)node_this->list_var.data); - *((int *)node_this->list_var.data)=t; - } - first_temp_this=first_temp_this->next; - } - } - else if(sort_type==SORT_DBL) - { - nasal_list_unit *temp=head; - while(temp->next) - { - temp=temp->next; - if(temp->list_var.type!=VAR_DOUBLE) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be float."<list_var.type!=VAR_DOUBLE) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be float."<next; - while(first_temp_this->next) - { - node_this=first_temp_this; - second_temp_this=first_temp_this->next; - while(second_temp_this->next) - { - if(_cmp>0 && *((double *)node_this->list_var.data)>*((double *)second_temp_this->list_var.data))//from small to large - node_this=second_temp_this; - else if(_cmp<=0 && *((double *)node_this->list_var.data)<*((double *)second_temp_this->list_var.data))//from large to small - node_this=second_temp_this; - second_temp_this=second_temp_this->next; - } - if(_cmp>0 && *((double *)node_this->list_var.data)>*((double *)second_temp_this->list_var.data))//from small to large func(a,b) a-b - node_this=second_temp_this; - else if(_cmp<=0 && *((double *)node_this->list_var.data)<*((double *)second_temp_this->list_var.data))//from large to small func(a,b) b-a - node_this=second_temp_this; - if(node_this!=first_temp_this) - { - double t; - t=*((double *)first_temp_this->list_var.data); - *((double *)first_temp_this->list_var.data)=*((double *)node_this->list_var.data); - *((double *)node_this->list_var.data)=t; - } - first_temp_this=first_temp_this->next; - } - } - else if(sort_type==SORT_STR) - { - nasal_list_unit *temp=head; - while(temp->next) - { - temp=temp->next; - if(temp->list_var.type!=VAR_STRING) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be string."<list_var.type!=VAR_STRING) - { - std::cout<<"[Error] Incorrect type inside: "<list_var.type<<".But type must be string."<next; - while(first_temp_this->next) - { - node_this=first_temp_this; - second_temp_this=first_temp_this->next; - while(second_temp_this->next) - { - if(_cmp>0 && *((std::string *)node_this->list_var.data)>*((std::string *)second_temp_this->list_var.data))//from small to large - node_this=second_temp_this; - else if(_cmp<=0 && *((std::string *)node_this->list_var.data)<*((std::string *)second_temp_this->list_var.data))//from large to small - node_this=second_temp_this; - second_temp_this=second_temp_this->next; - } - if(_cmp>0 && *((std::string *)node_this->list_var.data)>*((std::string *)second_temp_this->list_var.data))//from small to large func(a,b) cmp(a,b) - node_this=second_temp_this; - else if(_cmp<=0 && *((std::string *)node_this->list_var.data)<*((std::string *)second_temp_this->list_var.data))//from large to small func(a,b) cmp(b,a) or -cmp(a,b) - node_this=second_temp_this; - if(node_this!=first_temp_this) - { - std::string t; - t=*((std::string *)first_temp_this->list_var.data); - *((std::string *)first_temp_this->list_var.data)=*((std::string *)node_this->list_var.data); - *((std::string *)node_this->list_var.data)=t; - } - first_temp_this=first_temp_this->next; - } - } - return temp_list; -} - -#endif