#include
#include
#include
typedef struct LinkNode
{
char data;
struct LinkNode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
L=(LinkNode*)malloc(sizeof(LinkNode));
L->next=NULL;
}
void CreatList(LinkNode *&L,char a[],int n)
{
LinkNode *s,*r;
L=(LinkNode*)malloc(sizeof(LinkNode));
r=L;
for(int i=0;idata=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void EmptyList(LinkNode *L)
{
if(L->next==NULL)
{
printf("empty\n");
}
else
{
printf("not empty\n");
}
}
void DisList(LinkNode *L)
{
LinkNode *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void LengthList(LinkNode *L)
{
int n;
LinkNode *p=L;
while(p->next!=NULL)
{
n++;
p=p->next;
}
printf("Length:%d\n",n);
}
void GetElem(LinkNode *L,int n)
{
int j=0;
LinkNode *p=L;
if(n<=0)
{
printf("ERROR input\n");
}
else
{
while(jNULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
printf("%c\n",p->data);
}
}
}
void LocateList(LinkNode *L,char e)
{
int i=1;
LinkNode *p=L->next;
while(p!=NULL&&p->data!=e)
{
p=p->next;
i++;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
printf("%d\n",i);
}
}
void ListDelete(LinkNode *&L,int n,char &e)
{
int j=0;
LinkNode *p=L;
LinkNode *q;
if(n<=0)
{
printf("ERROR input\n");
}
while(p!=NULL&&jp=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
q=p->next;
if(q==NULL)
{
printf("ERROR input\n");
}
e=q->data;
p->next=q->next;
free(q);
}
}
void ListInsert(LinkNode *&L,int n,char &e)
{
int j=0;
LinkNode *p=L,*q;
if(n<=0)
{
printf("ERROR input\n");
}
while(jNULL)
{
j++;
p=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
q=(LinkNode*)malloc(sizeof(LinkNode));
q->data=e;
q->next=p->next;
p->next=q;
}
}
int main()
{
char s[100];
char ch,sh;
char e;
int n,i,j,flag;
LinkNode *L;
int count;
scanf("%s",s);
count=strlen(s);
scanf("%d\n",&n);
scanf("%c\n",&ch);
scanf("%d\n",&i);
scanf("%c\n",&sh);
scanf("%d",&j);
InitList(L);
EmptyList(L);
CreatList(L,s,count);
DisList(L);
LengthList(L);
EmptyList(L);
GetElem(L,n);
LocateList(L,ch);
ListInsert(L,i,sh);
DisList(L);
ListDelete(L,j,e);
DisList(L);
}
修改如下,供参考:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct LinkNode
{
char data;
struct LinkNode *next;
}LinkNode;
void InitList(LinkNode *&L)
{
L=(LinkNode*)malloc(sizeof(LinkNode));
L->next=NULL;
}
void CreatList(LinkNode *&L,char a[],int n)
{
LinkNode *s,*r;
//L=(LinkNode*)malloc(sizeof(LinkNode));修改
r = L;
for(int i=0;i<n;i++)
{
s=(LinkNode*)malloc(sizeof(LinkNode));
s->data=a[i];
r->next=s;
r=s;
}
r->next=NULL;
}
void EmptyList(LinkNode *L)
{
if(L->next==NULL)
{
printf("empty\n");
}
else
{
printf("not empty\n");
}
}
void DisList(LinkNode *L)
{
LinkNode *p=L->next;
while(p!=NULL)
{
printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void LengthList(LinkNode *L)
{
int n = 0; //修改
LinkNode *p=L->next;//修改
while(p!=NULL) //(p->next!=NULL) 修改
{
n++;
p=p->next;
}
printf("Length:%d\n",n);
}
void GetElem(LinkNode *L,int n)
{
int j=0;
LinkNode *p=L;
if(n<=0)
{
printf("ERROR input\n");
}
else
{
while(p != NULL && j < n)
{
j++;
p=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
printf("%c\n",p->data);
}
}
}
void LocateList(LinkNode *L,char e)
{
int i = 1;
LinkNode *p = L->next;
while(p!=NULL && p->data!=e)
{
p=p->next;
i++;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
printf("%d\n",i);
}
}
void ListDelete(LinkNode *&L,int n,char &e)
{
int j=0;
LinkNode *p=L;
LinkNode *q;
if(n <= 0)
{
printf("ERROR input\n");
}
while(p != NULL && j<n-1)
{
j++;
p=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
q=p->next;
if(q==NULL)
{
printf("ERROR input\n");
}
else{
e=q->data;
p->next=q->next;
free(q);
}
}
}
void ListInsert(LinkNode *&L,int n,char &e)
{
int j=0;
LinkNode *p=L,*q;
if(n <= 0)
{
printf("ERROR input\n");
}
while(p != NULL && j < n - 1)
{
j++;
p=p->next;
}
if(p==NULL)
{
printf("ERROR input\n");
}
else
{
q=(LinkNode*)malloc(sizeof(LinkNode));
q->data=e;
q->next=p->next;
p->next=q;
}
}
void destory(LinkNode *L)
{
LinkNode *p = L;
while (L)
{
p = L;
L = L->next;
free(p);
}
}
int main()
{
char s[100];
char ch,sh;
char e;
int n,i,j,flag;
LinkNode *L;
int count;
scanf("%s",s);//(3)输入字符串 s
scanf("%d",&n);//(7)输出单链表第 n 个元素
scanf(" %c",&ch);//(8)输入一个字符ch ,查找该字符在链表中的位置
scanf("%d %c",&i,&sh);//(9)在第 i 个位置插入元素 sh
scanf("%d",&j);//(11)删除单链表的第 j 个元素
InitList(L); //(1)初始化单链表
EmptyList(L);//(2)判断单链表是否为空
count=strlen(s);//(3)输入字符串 s
CreatList(L,s,count);//插入链表
DisList(L); //(4)输出单链表
LengthList(L);//(5)输出单链表长度
EmptyList(L);//(6)判断单链表是否为空
GetElem(L,n);//(7)输出单链表第 n 个元素
LocateList(L,ch);//(8)输入一个字符ch ,查找该字符在链表中的位置
ListInsert(L,i,sh);//(9)在第 i 个位置插入元素 sh
DisList(L); //(10)输出单链表
ListDelete(L,j,e);//(11)删除单链表的第 j 个元素
DisList(L); //(12)输出单链表
destory(L);//(13)释放单链表
return 0;
}
打断点
看看输入的数据到底触发了哪个 ERROR 的代码,调试下