链表问题,有没有什么办法可以加快链表的创建速度呢?
如题
- C/C++ code
LISTNAME* ListCreat(int ListSpace){ LISTNAME*p1,*p2; p1=p2=new LISTNAME; if(ListSpace==1) { p1->Next=NULL; p1->Last=NULL ; return p1; } if(ListSpace==2) { p1->Last=NULL; p1->Next=p2; p2->Last=p1; p2->Next=NULL; return p1; } int tmp=ListSpace; LISTNAME* Head=new LISTNAME; while(ListSpace!=0) { if(ListSpace+1==tmp) { Head->Last=NULL; Head->Next=p1; } {p1->Next=p2; p2->Last=p1; p2->Next=NULL; } {p1=p2; p2=NULL;//清空节点 p2=new Student;//开辟新的节点 ListSpace--; } }p2->Next=NULL;//再次设置p2 return Head;}//funtion endint main(){ Student* a; Student* b; a=ListCreat(20);//如果我把这行写成65535或者更大的数字,怎么样可以利用算法加快链表创建呢? b=a; for(;a!=NULL;) { cout<<a<<endl; a=a->Next; } cout<<endl; return 0;}[解决办法]
楼上的没有搞清楚问题前,就不要急于下结论哦。
如果是一次性对链表进行创建,那么不妨一次性申请内存。
ListCreat(LIST_COUNT)
.....
new Student[LIST_COUNT] // -- 一次性申请足够的内存单元
.....
然后再构造一个list结构关系。
这样子就可以避免申请内存的往复消耗。链表的耗时很大的一个环节就在不停的node节点创建上面。你可以一次性完成这个耗时的过程,list的结构再勾搭起来就快多了。
试试看。