#include<stdio.h>
#include<stdlib.h>
#define OK 1;
#define ERROR 0;
#define OVERFLOW -2;
typedef int Status;
#define MAXSIZE 100;
//单链表的存储
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*Linklist;
//前插法
void CreateList(Linklist &L,int n)
{
L = new LNode;
L->next = NULL;
Linklist p;
for(int i = 0 ;i < n ;i++)
{
p = new LNode;
scanf("%d",&p->data);
p->next = L->next;
L->next = p;
}
}
//单链表的取值
Status GetElem(Linklist L,int i,int &e)
{
Linklist p;
int j;
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(Linklist &L,int i,int e)
{
Linklist p,s;
int j;
p = L;
j=0;
while(p&&j<i-1)
{
p = p->next;
j++;
}
if(!p || j>i-1)
return ERROR;
s = new LNode;
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
//单链表的删除
Status ListDelete(Linklist &L,int i)
{
Linklist q,p;
int j = 0;
p = L;
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;
delete q;
return OK;
}
//单链表的遍历
void DisplayList(Linklist L)
{
Linklist p;
p = L->next;
while(p != NULL )
{
printf("%d\t",p->data);
p = p->next;
}
}
int main()
{
int n,x,a,j;
int num,k;
Linklist mylist;
printf("准备输入多少个数据:");
scanf("%d\n",&n);
CreateList(mylist,n);
printf("单链表的内容为:\n");
DisplayList(mylist);
//插入
printf("\n请输入你要插入的位置:");
scanf("%d\n",&j);
printf("\n请输入你要插入的数字:");
scanf("%d\n",&num);
ListInsert(mylist,j,num);
printf("\n插入后的内容为:");
DisplayList(mylist);
//删除
printf("\n请输入你要删除第几个字符:");
scanf("%d\n",&k);
ListDelete(mylist,k);
printf("删除后的内容为:");
DisplayList(mylist);
return 0;
}
求问我这个为什么到插入时候就会出现错误