代码没错,但是输入数据后按回车键黑框就消失了



#include <stdio.h>
#include <stdlib.h>

#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10

typedef int Status;
typedef int ElemType;
typedef  struct  LNode {    //声明结点的类型和指向结点的指针类型  
    ElemType data;    //数据元素的类型 
    struct   LNode  *next;   //指示结点地址的指针  
}LNode, *LinkList; 

void InitList_L(LinkList &L){
    L=(LinkList)malloc(sizeof(LNode));
    if(!L)exit (OVERFLOW);
    L->next=NULL;
}//初始化

void DestroyList_L(LinkList &L){
     //销毁以 L 为头指针的单链表,释放链表中所有结点 
    while(L){ 
    LinkList    p=L; 
        L=L->next; 
        free(p); 
    }//while 
}//DestroyList_L 

void CreateList_L(LinkList &L, int n){
    int i;
    L=(LinkList)malloc(sizeof(LNode));
    if(!L)exit (OVERFLOW);
    L->next=NULL;
    for(i=n;i>0;i--){
        LinkList p=(LinkList)malloc(sizeof(LNode));
        scanf("%d",&p->data);
        p->next=L->next;
        L->next=p;
    }
}//头插法建表 
     
Status GetElem_L(LinkList &L, int i, ElemType e){
    LinkList    p=L->next;
    int j=1;
    while(p&&j<i){
        p=p->next;j++;
    } 
    if(!p||j>i) return ERROR;
    e=p->data;
    return OK;
}//按序号查找 

Status ListInsert_L(LinkList &L, int i, ElemType e){ 
    LinkList    p=L;    int j=0; 
    while( p && j<i-1){p=p->next;   ++j;}    //寻找第 i-1 个结点  
    if(!p || j>i-1)    return ERROR;    // i 小于 1 或者大于表长 
    LinkList s=(LinkList)malloc(sizeof(LNode));    // 生成新结点 
    s->data=e; 
    s->next=p->next;        //插入 L 中 
    p->next=s; 
    return OK; 
}//LinstInsert_L 

Status ListDelete_L(LinkList &L, int i, ElemType &e) {
    LinkList    p=L;   int j=0; 
    while( p->next && j<i-1)     { p=p->next;  ++j;} 
    if(!( p->next) || j>i-1)    return ERROR;  //删除位置不合理 
    LinkList q=p->next; 
    p->next=q->next;     //删除结点
    e=q->data; 
    free(q); //释放结点
    return OK; 
}//ListDelete_L 

void  ListShow_L(LinkList L){
    LinkList p=L->next;
    while (p){
        printf("%d\t",p->data);
    p=p->next;
    }
    printf("\n");
}

int main(){
    LinkList La;
    int i,n;
    ElemType e;
    InitList_L(La);
    scanf("%d",&n);
    for(i=0;i<n;i++){
        scanf("%d",&e);
         ListInsert_L(La,i+1,e);
    }
    ListShow_L(La);
    return 0;
}




img

if(!p || j>i-1) return ERROR; // i 小于 1 或者大于表长
应该是 if(p==NULL || j>i-1) return ERROR;吧
怎么会!p呢。

你需要到cmd下运行自己的程序,或者return 0;之前加个pause,或者加个输入之类的
你直接双击运行,那执行完可不就自动关闭了