c++ 编译过了,运行错误问题
#include<stdio.h>#include<malloc.h>#include<string.h>typedef int ElemType;typedef struct LNode { ElemType data; struct LNode *next;}LNode,*LinkList;void InitList_Q(LinkList Q){ Q=(LNode*)malloc(sizeof(LNode)); if(NULL==Q) printf("建表失败!"); else printf("建表成功!");}int InsertList_Q(LinkList Q,ElemType e,int i){ LNode *p,*q=Q; int j; if(NULL==(p=(LNode*)malloc(sizeof(LNode)))) return 0; p->data=e; for(j=1;j<i;j++) q=q->next; p->next=q->next; q->next=p; printf("插入成功!"); return 1;}int DeList_Q(LinkList Q,int i){ LNode *p,*q; ElemType e; if(NULL==Q) { printf("该表为空!"); return 0; } p=Q; while(i-->1){ q=p; p=p->next; } q->next=p->next; e=p->data; free(p); printf("删除成功!"); return 1;}int ShowList_Q(LinkList Q){ LNode *p; p=Q; if(Q==NULL){ printf("该表为空!"); return 0; } printf("表中元素分别为:尀n"); while(p) { printf("3d",p->data); p=p->next; } return 1;}void SearchList_Q(LinkList Q,ElemType e){ LNode *p; int n=0; if(NULL==Q) { printf("该表为空,查找失败!"); } else { p=Q; while(p->data!=e&&p) { n++; p=p->next; } if(p->data==e) { printf("元素找到,为第%d个元素尀n",n); } else { printf(" 查找失败!尀n"); } }}void LenList_Q(LinkList Q){ int length=0; LNode *p; p=Q; while(p){ length++; p=p->next; } printf("该表长度为:%d",length);}void main(){ LNode Q; int i,j=1,k,n; ElemType e; while(j) { printf(" 线性表子系统 尀n"); printf("*************************************尀n"); printf("* 1-------建表 *尀n"); printf("* 2-------插入 *尀n"); printf("* 3-------删除 *尀n"); printf("* 4-------显示 *尀n"); printf("* 5-------查找 *尀n"); printf("* 6------求表长 *尀n"); printf("* 0-------返回 *尀n"); printf(" 选择菜单 尀n"); scanf("%d",&i); if(i==1) InitList_Q(&Q); if(i==2) { printf("请输入要插入的元素:"); scanf("%d",&e); printf("尀n请输入要插入的位置:"); getchar(); scanf("%d",&k); InsertList_Q(&Q,e,k); } if(i==3) { printf("请输入要删除元素的位置:"); scanf("%d",&n); DeList_Q(&Q,n); } if(i==4) ShowList_Q(&Q); if(i==5) LenList_Q(&Q); if(i==0) j=0; }}编译过了,可是运行老是会出现运行过程出现一个问题,我做链表之类的程序都会出现,希望大家帮我找出问题所在,谢谢!