大神帮忙看下小弟我这个静态链表的程序应该咋改呀,弄了一下午了,还是有有关问题

大神帮忙看下我这个静态链表的程序应该咋改呀,弄了一下午了,还是有问题
我就是想创建一个静态链表,然后在里面插入一个数,最后打印出来,程序如下喽:
#include <stdio.h>
#include <iostream.h>
#define MAX_SIZE 20
typedef struct{
int data;
int cur;
}component,SLinklist[MAX_SIZE];

void init(SLinklist &space)
{
for(int i=0;i<MAX_SIZE-1;i++)
space[i].cur=i+1;
space[MAX_SIZE-1].cur=0;
}
int Malloc(SLinklist &space)
{
int i=space[0].cur;
    if(space[0].cur)
space[0].cur=space[i].cur;
return i;
}
int Insert(SLinklist &space,int i ,int e)
{
  int j=0;
while(j<i-1)
j=space[j].cur;
    int m=Malloc(space);
space[m].data=e;
space[m].cur=space[j].cur;
space[j].cur=m;
return true;
}
void print( SLinklist &space)
{
    int p = 1;
    
    while ( p!=NULL )
    {
        printf( "%d ", space[p].data );
        p = space[p].cur;
    }
    
} //输出静态链表中的元素 

void main()

   SLinklist space;
   int a=1;
   int temp;
   init(space);
   for(int i=0;i<10;i++)
   {
   temp=Malloc(space);
   space[temp].data=a;
   a=a+2;
   }
   Insert(space,3,88);
   print(space);
 
}
------解决方案--------------------

#define MAX_SIZE  20  //静态链表的最大空间
typedef struct Node
{
    int data;
    int cur;
}NODE, * PNODE;
int    list_len ; //链表长度
NODE SLinkList[MAX_SIZE];  //静态链表

//功能: 建立头结点
//list::静态链表    
void InitList(PNODE  &list)

        list_len = 0; //链表长度为0
         list[0].cur = 0;  //头结点不存储数据,只是把游标设为0即可,


void InsertNode(PNODE &list,int data)
{
     int i = 0;  
      while(list[i].cur != 0)   // 找到尾结点
    {
           i = list[i].cur; 
      }     
       
       //在空间末尾插入节点
        list[i].cur = ++ list_len; 
        list[list_len].cur = 0; //尾结点指针为0
       list[list_len].data = data;
}

void PrintList(PNODE &list)
{
     int  i  = 1;
    int p;
      if( list[0].cur == 0 ) return ; //空链表则直接返回
        
      while( list [i].cur != 0)  //头结点不打印
    {
            printf(“%d”,list[i].data);
            i = list[i].cur;  //找到下一个节点
    }

    printf("%d",list[i].data)
    
}


void main()
{
      InitList(SLinkList);
     for(int i = 0; i< 5; i++)
    {
          InsertNode(SLinkList,i);  //把0~5插入链表
    }
    PrintList(SLinkList)
}

------解决方案--------------------
这个是我用vc++调试过的,刚发的那个代码有点问题,用这个
关键是如果一般性插入只需插入空间末尾即可,如果要排序就要复杂了,呵呵

// SLinkList.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"


#define MAX_SIZE  20  //静态链表的最大空间
typedef struct Node
{
int data;
int cur;
}NODE, * PNODE;
int    list_len ; //链表长度
NODE SLinkList[MAX_SIZE];  //静态链表

//功能: 建立头结点
//list::静态链表    
void InitList(PNODE list)
{
list_len = 0; //链表长度为0
    list[0].cur = 0;  //头结点不存储数据,只是把游标设为0即可,
}

void InsertNode(PNODE list,int data)
{
int i = 0;  
while(list[i].cur != 0)   // 找到尾结点
{
i = list[i].cur; 
}