注册 登录
编程论坛 数据结构与算法

请大神帮我看看这个程序哪里出错,麻烦会的赶紧帮我看看,谢谢了

教育方法 发布于 2016-09-18 18:58, 1652 次点击
#include<stdio.h>
#include<stdlib.h>/*删除递增线性表中值大于min且小于max的元素*/
#include <malloc.h>
#define ERROR 0
#define OK 1
typedef struct Node  
{
 int data;
 struct Node *next;

}Node,*LinkList;/*LinkList为结构指针类型,用来说明头指针变量*/
void initlinklist(LinkList *L)/*初始化单链表*/
{
 *L=(LinkList)malloc(sizeof(Node));
 (*L)->next=NULL;
}
void  Create(LinkList L)/*建立单链表*/
{
 Node *s,*r;
 char c;
    int flag=1;
 r=L;
 while(flag)
 {
  scanf("%d",&c);
  if(c!=-1)/*当输入-1时建表结束*/
  {
   s=(Node *)malloc(sizeof(Node));
   s->data=c;
   r->next=s;
   r=s;
  
  }
  else
  {
   flag=0;
   r->next=NULL;
  }

 }
}
int ListLength(LinkList L)
{
 int i=0;
 Node *p;
 p=L->next;
 while(p!=NULL)
 {p=p->next;
 i++;}
 return i;
}
void print(LinkList L)
{
 Node *p;
 p=L->next;
 printf("\nThe list value is:");
 while(p!=NULL)
 {
  printf("%d ",p->data);
  p=p->next;
 }

}
void Delete_Between(LinkList L,int min,int max)
{
 
 Node *p,*q;
 if(max>=min)
 {
  p=L;
  q=p->next;
  while(q!=NULL&&q->data<=min)
  {
   p=q;
   q=q->next;
  }
  while(q!=NULL&&q->data<max)
  {
   p->next=q->next;
   free(q);
   q=p->next;
  }
 }
 

}
void main()
{
 LinkList LA;
 Node *p,*q;
 int i,len;
 char min,max;
    initlinklist(&LA);
    printf("please Create the LA,using the -1 End(the increasing):\n");
    Create(LA);
 print(LA);
 getchar();
 printf("\nplease input the value of min and max:");
 scanf("%d %d",&min,&max);
 Delete_Between(LA,min,max);
 print(LA);
}
0 回复
1