链表删除的问题
本人是莱鸟~所以对一个链表删除问题想了很久与调试了很久都不能成功删除答案;想问问各位高手~程序是这样的:
#include <stdio.h>
#include <stdlib.h>
#define SIZE 5
#define LEN sizeof(LNode)
typedef struct LNode{//建立单链表的顺序存储结构
int data;
struct LNode *next;
}LNode,*LinkList;
//建立单链表
LinkList creat(int n) {
//正序输入n个元素的值,建立带表头结点的单链线性表
LinkList head,r,p;
int x,i;
head=(LNode*)malloc(LEN);//生成新结点
r=head;
printf("请输入%d递增元素:\n",n);
for(i=n;i>0;i--) {
scanf("%d",&x);
p=(LNode*)malloc(LEN);
p->data=x;
r->next=p;
r=p;/*插入到表头*/ }
r->next=NULL;
return head;
}
//显示单链表中的元素
void output(LinkList head) {
LinkList p;
p=head->next;
do {
printf("%3d",p->data);
p=p->next;
} while(p);
printf("\n");
}
void Remove(LinkList L, int mink, int maxk) {
/*删除链表中所有值大于mink且小于maxk的元素,同时释放被删除结点空间*/
LinkList p;
int i;
printf("%d %d\n",mink, maxk);
p = L;
for (i=0; i < SIZE;i++) {
if (p->data > mink) {
if (p->data < maxk)
p->next = p->next->next;} //p是最后一个不大于mink的元素
}
printf("打印删除后的数列:\n");
output(p);
free(p);
}
void main()
{
int mink, maxk, i=0;
LinkList L;
L = creat(SIZE); //建立单链表
printf("请输入需要删除数列的范围:\n");
scanf("%d %d",&mink,&maxk);
/*删除链表中所有值大于mink且小于maxk的元素,同时释放被删除结点空间*/
Remove(L, mink, maxk);
}
其中我发现Remove函数起不到作用,究竟是错在哪里?
望高手指点~~