这个程序运行后不知怎么会变成这样的?
//已知线性表中的元素以值递增有序排列,以单链表作存储结构,删除表中所有值大于mink且小于maxk的元素#include<stdio.h>
#include<stdlib.h>
//线性表的单链表存储结构
typedef struct LNode{
int data;
struct LNode * next;
} LNode,*LinkList;
LNode * p;
void CreateList_L(LinkList &L,int n){
//逆位序输入n个元素的值,建立带表头结点的单链线性表L
scanf("%d",&n);
L = (LinkList) malloc (sizeof (LNode));
int i;
L->next = NULL; //先建立一个带头结点的单链表
for(i = n; i > 0; --i)
{ p= (LinkList) malloc(sizeof (LNode)); //生成新的结点
scanf("%d",&p->data);
p->next = L ->next; L->next = p; //插入到表头
}
} //CreateList_L
void Delete_Between(LinkList &L,int mink,int maxk)//删除元素递增排列的链表L中值大于mink且小于maxk的所有元素
{
LNode * q;
scanf("%d%d",&mink,&maxk);
p=L;
while(p->next->data<=mink) p=p->next; //p是最后一个不大于mink的元素
if(p->next) //如果还有比mink更大的元素
{
q=p->next;
while(q->data<maxk) q=q->next; //q是第一个不小于maxk的元素
p->next=q;
}
}//Delete_Between
void main ()
{
void CreateList_L(LinkList &L,int n);
void Delete_Between(LinkList &L,int mink,int maxk);
while(p!= NULL){
printf("%d",p->data);
p=p->next;
}
}