| 
 | 
 
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册  
 
x
 
最近看到数据结构静态数组部分,自认为听懂了,但是一上手发现问题很多,搞了很久好像弄完了,故把代码贴上来,抛砖引玉,希望大家提出不足和改进 
 
- #define MAXSIZE 1000
 
  
- typedef struct component
 
 - {
 
 -     int data;
 
 -     int cur;
 
 - }component;
 
  
- component StaticLinkList[MAXSIZE];
 
  
- void InitList()
 
 - {
 
 -     for(int i=0;i<MAXSIZE-1;i++)
 
 -     {
 
 -         StaticLinkList[i].cur = i+1;
 
 -     }
 
 -     StaticLinkList[MAXSIZE-1].cur = 0;
 
 - }
 
  
- void Print()
 
 - {
 
 -     printf("\n--------------------------\n");
 
 -     for(int i=StaticLinkList[MAXSIZE-1].cur;i;i = StaticLinkList[i].cur)
 
 -     {
 
 -         printf("%d\t",StaticLinkList[i].data);
 
 -     }
 
 -     printf("\n-----------------------------\n");
 
 - }
 
  
- void ListInsert(int cur,int data)
 
 - {
 
 -     if(cur<1 || cur > MAXSIZE-2)
 
 -         return;
 
  
-     if(StaticLinkList[MAXSIZE-1].cur==0)
 
 -     {
 
 -         int reserve = StaticLinkList[0].cur;
 
 -         StaticLinkList[0].cur = StaticLinkList[reserve].cur;
 
 -         StaticLinkList[reserve].data = data;
 
 -         StaticLinkList[reserve].cur = 0;
 
 -         StaticLinkList[MAXSIZE-1].cur = reserve;
 
 -     }
 
  
-     else if(cur == 1)
 
 -     {
 
 -         int reserve = StaticLinkList[0].cur;
 
 -         StaticLinkList[reserve].data = data;
 
 -         StaticLinkList[0].cur = StaticLinkList[reserve].cur;
 
 -         StaticLinkList[reserve].cur = StaticLinkList[MAXSIZE-1].cur;
 
 -         StaticLinkList[MAXSIZE-1].cur = reserve;
 
 -     }
 
 -     else
 
 -     {
 
 -         int tmp = StaticLinkList[MAXSIZE-1].cur;
 
 -         for(int i=1;i<cur-1 && StaticLinkList[tmp].cur;i++,tmp = StaticLinkList[tmp].cur);
 
 -         int reserve = StaticLinkList[0].cur;
 
 -         StaticLinkList[reserve].data = data;
 
 -         StaticLinkList[0].cur = StaticLinkList[reserve].cur;
 
 -         StaticLinkList[reserve].cur = StaticLinkList[tmp].cur;
 
 -         StaticLinkList[tmp].cur = reserve;
 
 -     }
 
 - }
 
  
- void ListDelete(int cur)
 
 - {
 
 -     if(cur < 1 || cur > MAXSIZE-2)
 
 -         return;
 
 -     int tmp = StaticLinkList[MAXSIZE-1].cur;
 
 -     if(tmp == 0)
 
 -     {
 
 -         printf("\nempty\n\n");
 
 -     }
 
  
-     if(cur == 1)
 
 -     {
 
 -         StaticLinkList[MAXSIZE-1].cur = StaticLinkList[tmp].cur;
 
 -         StaticLinkList[tmp].cur = StaticLinkList[0].cur;
 
 -         StaticLinkList[0].cur = tmp;
 
 -     }
 
 -     else
 
 -     {
 
 -         for(int i=1;i<cur-1 && StaticLinkList[tmp].cur;i++,tmp = StaticLinkList[tmp].cur);
 
 -         if(tmp == 0)
 
 -         {
 
 -             printf("\n\n\n cur error!\n\n\n");
 
 -             return;
 
 -         }
 
  
-         int del = StaticLinkList[tmp].cur;
 
 -         StaticLinkList[tmp].cur = StaticLinkList[del].cur;
 
 -         StaticLinkList[del].cur = StaticLinkList[0].cur;
 
 -         StaticLinkList[0].cur = del;
 
 -     }
 
 - }
 
  复制代码 |   
 
 
 
 |