C++排序问题的疑问

这是我关于排序的数据结构程序,我的程序有问题,修改多次后还是有错误,希望有人帮我改一改,非常感谢!
运行环境:Dev-C++
再次谢谢!


#include <stdio.h>  
#include <stdlib.h>   
#include <fstream>
#include <iomanip>
#include <iostream> 
#include <windows.h>  
#define MAXSIZE 11
#define MAXNUMOFBASE 21
#define extent 10
#define readFileName"【程序源码4-4】静态链表插入排序-读入数据.txt"
#define outFileName"【程序源码4-4】静态链表插入排序-结果文件.txt"
struct node
{
    int data;
    int next;
};
int data[MAXSIZE]={9999,17,60,1,12,5,7,63,30,87,3};
void file1(void); 
void showmenu(void);
void clearscreen();
int userchoice(void);
void simpleselectsort(int data[],int length);
void display(int data[],int length);
void readfiledata(node data[]);
void display(node data[]);
void staticlinklistinsertsort(node data[]);
void outputresultstoafile(node data[],int flags);
void processmenu(int menuchoice);
//函数功能:菜单 
void showmenu(void)
{
    puts("***************功能菜单***************\n");
    puts("*1.排序法1(简单选择排序法)           *\n");
    puts("*2.排序法2(静态链表排序法)           *\n");
    puts("*3.本章主要概念收获                  *\n");
    puts("*0.结束程序                          *\n");
    puts("**************************************\n");
    printf("请输入您的选择:(0-3)");
}
//函数功能:遍历所有数据
void display(int data[],int length)
{
    int i;
    for(i=1;i<length;i++)
    {
        printf("%d",data[i]);
    }
    printf("\n");
} 
//函数功能:完成元素的排序 
void simpleselectsort(int data[],int length)
{
    int term;
    int i,j,item;
    for(term=1;term<length;term++)
    {
        item=data[term];
        for(i=term;i<length;i++)
            if(data[i]<=item)
            {
                item=data[i];
                j=1;
            }
            data[j]=data[term];
            data[term]=item;
    }
}
//函数功能:从文件读入数据
void readfiledata(node data[])
{
    FILE *in;
    int i;
    if((in=fopen(readFileName,"rb"))==NULL) 
    {
        printf("文件打不开或不存在!\n");
        exit(0);
    }
    for(i=1;i<=extent;i++)
    {
        fscanf(in,"%d",&data[i].data);
        data[i].next=i;
    }
    fclose(in);
} 
//函数功能:遍历数据
void display(node data[])
{
    int i;
    for(i=1;i<=extent;i++)
        printf("%d",data[i].data);
    printf("\n");
}
//函数功能:静态链表插入排序
void staticlinklistinsertsort(node data[])
{
    int i,position,tempdata,tempposit;
    data[0].next=0;
    for(i=1;i<=extent;i++)
    {
        position=data[0].next;
        if(data[i].data<data[position].data)
        {
            data[0].next=i;
            data[i].next=position;
         }
         else
         {
             while(data[i].data>data[position].data&&data[position].next!=0)
             {
                tempdata=position;
                position=data[position].next;    
            }
            if(data[i].data<data[position].data||data[position].next!=0)
            {
                data[tempdata].next=i;
                data[i].next=position;
            }
            else
            {
                data[position].next=i;
                data[i].next=0;
            }
        }
    }
    tempposit=data[0].next;
    for(i=1;i<=extent;i++)
    {
        while(tempposit<i)
            tempposit=data[tempposit].next;
        position=tempposit;
        tempdata=data[position].data;
        tempposit=data[position].next;
        data[position].data=data[i].data;
        data[position].next=data[i].next;
        data[i].data=tempdata;
        data[i].next=position;
    }
}
//函数功能:输出结果到文件
void outputresultstoafile(node data[],int flags)
{
    FILE *out;
    int i;
    if((out=fopen(outFileName,"a"))==NULL)
    {
        printf("结果保存失败!原因可能是不存在文件。");
    }
    if(flags==0)
    {
        fprintf(out,"原始数据为:\n");
        for(i=1;i<=extent;i++)
            fprintf(out,"%d",data[i].data);
        fprintf(out,"\n");
    }
    else
    {
        fprintf(out,"排序后的数据为:\n");
        for(i=1;i<=extent;i++)
            fprintf(out,"%d",data[i].data);
        fprintf(out,"\n");
    }
    fclose(out);
}
//函数功能:本章主要概念收获
void file1(void)
{
    char str[1000];
    FILE *fp=fopen("k软件201-48-陈可盈-本章主要概念收获.txt","r");
    if(fp==NULL)
    {
        printf("文件打开失败\n");
        exit(0);
    }
    while(!feof(fp))
    {
        if(fgets(str,100,fp)==NULL) 
            break;
        printf("%s",str); 
    }
}
//函数功能:清屏 
void clearscreen()
{
    system("cls");
}
//函数功能:用户的选择 
int userchoice(void)
{
    int menuchoice;
    printf("请输入您的选择:");
    scanf("%d",&menuchoice);
    return menuchoice; 
 }
//函数功能:执行用户选择的功能
void processmenu(int menuchoice)
{
    int data[MAXSIZE]={9999,17,60,1,12,5,7,63,30,87,3};
    switch(menuchoice)    
    {
        
        node data[MAXNUMOFBASE];
            char choose;
        case 1:
            system("color f0");
            printf("**********************\n");
            printf("*   简单选择排序法   *\n");
            printf("**********************\n");
            printf("已从内部数组创建好10个数据.\n排序前:\n");
            display(data,MAXSIZE); 
            simpleselectsort(data,MAXSIZE);
            printf("排序后为:\n");
            display(data,MAXSIZE);
            system("pause");
            return;
                break;
        case 2:
            system("color f0");
            printf("**********************\n");
            printf("*   静态链表排序法   *\n");
            printf("**********************\n");
            readfiledata(data);
            printf("已从文件中读取10个待排数据如下...\n");
            display(data);
            outputresultstoafile(data,0);
            printf("排序后的结果为:\n");
            staticlinklistinsertsort(data);
            display(data);
            outputresultstoafile(data,1);
            printf("结果已保存到文件,是否查看(Y/N)?\n");
            choose=getchar();
            fflush(stdin);
            if(choose=='Y'||choose=='y')
                ShellExecute(NULL,"open",outFileName,NULL,NULL,SW_SHOWNORMAL);
            return;    
            system("pause");
                break;
        case 3:
                SetConsoleTitle("本章主要概念收获");
            system("color f0");
            while(1)
            {
                system("cls");
                puts("文件读取如下:");
                file1(); 
                  puts("\n文件读取完毕!");
                break;
            }
            return;
            system("pause");
                break; 
        case 0:
            puts("\n您已经成功退出本系统,欢迎再次使用!!!");
            system("pause");
            exit(1);
        default:
            puts("对不起,您输入的功能编号有错!请重新输入!!!");
            break;
    }
}
//函数功能:主函数
int main(void)
{
    int menuchoice;
    system("color f0");
    clearscreen();
    while(1)
    {
        showmenu();
        menuchoice=userchoice();
        processmenu(menuchoice);
        system("pause");
        clearscreen();
    }
} 

有两个display()函数哈