#include<iostream.h> struct Addr { int data; Addr *next; }*StartAddr,*EndAddr; int a=0; void Free() { Addr *Addis; while(StartAddr->next !=NULL) { Addis=StartAddr->next ; delete StartAddr; } if (StartAddr->next==NULL) { delete StartAddr; } } int InsertItem(int data) { if (a==0) { Addr* as=new Addr; StartAddr=as; EndAddr=as; as->data =data; as->next =NULL; a++; return 1; } Addr* as=new Addr; as->data =data; as->next=NULL; EndAddr->next =as; EndAddr=EndAddr->next; a++; return 1; } int SearchItem(int data) { Addr *ThePoint; if (a==0) { Addr* as=new Addr; StartAddr=as; EndAddr=as; as->data =data; as->next =NULL; a++; return 0; } ThePoint=StartAddr; if(ThePoint->data ==data) return 1; while(ThePoint->next!=NULL) { ThePoint=ThePoint->next ; if(ThePoint->data ==data) return 1; } Addr* as2=new Addr; as2->data=data; as2->next=NULL; ThePoint->next =as2 ; EndAddr=ThePoint->next ; return 0; } int main() { int a=0; int c; int i=0; int d=0; while(cin>>c,c!=-1) { a=i=d=0; while(i!=c+1) { a=d-i; if(a>0&&SearchItem(a)) { a=d+i; InsertItem(a); } if(a<=0) { a=d+i; InsertItem(a); } i++; d=a; } cout<<a<<endl; } return 0; } 代码比较混乱,主要意思是动态创建一个链表。