程序运行是出现段错误
下面是我的程序,比较多,所以分给多点C/C++code/*initial.h*/#include<stdio.h>#include<stdlib.h>#defineSUC...
下面是我的程序,比较多,所以分给多点
C/C++ code
/*initial.h*/
#include<stdio.h>
#include<stdlib.h>
#define SUCCESS 1
#define FAILURE 0
typedef 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;
}
/*main.c*/
C/C++ code
#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;
}
编译没有任何错误,但是运行的时候出现断错误 展开
C/C++ code
/*initial.h*/
#include<stdio.h>
#include<stdlib.h>
#define SUCCESS 1
#define FAILURE 0
typedef 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;
}
/*main.c*/
C/C++ code
#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;
}
编译没有任何错误,但是运行的时候出现断错误 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询