我明明分配五个空间但是遍历结果时却多出一个内存地址
#include <stdio.h>
#include<stdlib.h>
#define MAXSIZE 100
#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; //LinkList为指向结构体LNode的指针类型
Status InitList_L(LinkList *L)
{
//构造一个空的单链表L
L = (LNode *)malloc(sizeof(LNode)); //生成新结点作为头结点,用头指针L指向头结点
L->next = NULL; //头结点的指针域置空
return OK;
}
void CreateList_L(LinkList *L,int n)
{
for(int i=0;i<n;i++){
LNode *p=(LNode *)malloc(sizeof(LNode));
scanf("%d",&p->data);
p->next=L->next;
L->next=p;
L=L->next;
}
}
//在此处定义单链表的插入函数ListInsert_L
void ListInsert_L(LinkList *L,int n,int m){
int i=1;
LNode *p=L->next;
while(p!=NULL){
printf("%d",p->data);
if(p->next!=NULL){
printf(",");
}
p=p->next;
}
printf("\n");
p=L->next;
while(i!=n){
p=p->next;
i++;
}
if(i==n){
LNode *s=(LNode *)malloc(sizeof(LNode));
s->data=m;
s->next=p->next;
p->next=s;
}
p=L->next;
while(p!=NULL){
printf("%d",p->data);
p=p->next;
if(p!=NULL){
printf(",");
}
}
}
int main()
{
LinkList L; //用LinkList L;替换,与#include "LinkList.h"配合
int n,i;
ElemType e;
InitList_L(&L);
scanf("%d",&n); //输入元素个数
CreateList_L(&L,n);
int m;
scanf("%d%d",&i,&m); //输入插入元素的位置和元素
ListInsert_L(&L,i,m);
return 0;
}