数据结构单链表基础问题!
程序代码:
#include<stdio.h> #include<stdlib.h> #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define INFEASIBLE -1 #define OVERFLOW -2 typedef int Status; typedef int ElemType; typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; void CreateList_L(LinkList L,int n) { int i; LinkList p; L=(LinkList)malloc(sizeof(LNode)); L->next=NULL; for(i=n;i>0;--i) { p=(LinkList)malloc(sizeof(LNode)); scanf("%d",&p->data); L->next=p->next; p->next=L; } } Status GetElem_L(LinkList L,int i,ElemType e) { int j; LinkList p; p=L->next;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) { int j; LinkList p,s; p=L;j=0; while(p&&j<i-1) { p=p->next; ++j; } if(!p||j>i-1) return ERROR; s=(LinkList)malloc(sizeof(LNode)); s->data=e; s->next=p->next; p->next=s; return OK; } Status ListDelete_L(LinkList L,int i,ElemType e) { int j; LinkList p,q; p=L;j=0; while(p->next&&j<i-1) { p=p->next; ++j; } if(!(p->next)||j>i-1) return ERROR; q=p->next; p->next=q->next; e=q->data; free(q); return OK; } void main() { LinkList p,L; int n; int i; ElemType e; scanf("%d",&n); CreateList_L(L,n); p=L->next; while(p) { printf("%d ",p->data); p=p->next; } printf("\n"); scanf("%d ",&i); GetElem_L(L,i,e); printf("%d\n",e); scanf("%d %d",&i,&e); ListInsert_L(L,i,e); for(p=L->next;p;p=p->next) { printf("%d ",p->data); } printf("\n"); scanf("%d",&i); ListDelete_L(L,i,e); for(p=L->next;p;p=p->next) { printf("%d ",p->data); } printf("\n"); }
编辑和组建没有问题,但是运行的时候,突然中断了,这又是什么情况啊,哪里出问题了嘛?