GCC编译出现断错误
下面是我的程序,比较多,所以分给多点
/*initial.h*/#include<stdio.h>#include<stdlib.h>#define SUCCESS 1#define FAILURE 0typedef struct node{ char data; struct node* next;}listnode;typedef struct node* linklist;typedef int Status;Status Initiallist(linklist*); /*初始化链表*/Status InsertList(linklist*,int,char); /*在链表中插入元素*/Status DelList(linklist*,int); /*删除链表中的元素*/Status DestoryList(linklist*); /*销毁链表*/int ListLength(linklist);Status GetElem(linklist,int,int*);/*定义函数*/Status InitialList(linklist* link){ *link=(linklist)malloc(sizeof(listnode)); if(*link==NULL) exit(1); (*link)->next=*link; return SUCCESS;}Status DestoryList(linklist* link){ linklist q,p=(*link)->next; while(p!=*link){ q=p->next; free(p); p=q; } free(*link); *link=NULL; return SUCCESS;}Status InsertList(linklist* link,int pos,char data){ linklist p=(*link)->next; linklist s; int j=0; while(pos<0 || pos > ListLength((*link))) return FAILURE; while(j<pos-1){ j++; p=p->next; } s=(linklist)malloc(sizeof(listnode)); s->data=data; s->next=p->next; p->next=s; if(p==*link) *link=s; return SUCCESS;}Status DelList(linklist* link,int pos){ linklist q,p=(*link)->next; int j=0; while(pos<0 || pos>ListLength((*link))) return FAILURE; while(j<pos-1){ j++; p=p->next; } q=p->next; p->next=q->next; free(q); p=q; if(*link==q) *link=p; return SUCCESS;}int ListLength(linklist link){ linklist p=link->next; int i=0; while(p!=NULL){ i++; p=p->next; } return i;}Status GetElem(linklist link,int pos,int* data){ linklist p=link->next; int j=0; if(pos<0 || pos>ListLength(link)) return FAILURE; while(j<pos){ j++; p=p->next; } *data=p->data; return FAILURE;}
#include<stdio.h>#include "initial.h"int main(void){ linklist L; int length; int status=0; int data; length=ListLength(L); InitialList(&L); InsertList(&L,2,'b'); for(status=0;status<ListLength(L);status++){ GetElem(L,status,&data); printf("%c",data); } return 0;}