#include<stdio.h>
#include<malloc.h>
typedef struct student{
int ID;
char name[100];
int grades;
struct student *next;
}student,*stu;
student *InitList_Sq(stu curr);
student *CreateList_Sq(stu head,int n);
void ShowList_Sq(stu head);
student *DeleteList_Sq(stu head,int mink,int maxk);
int main()
{
stu head=NULL;
int n;
printf("请输入元素的个数:");
scanf("%d",&n);
head=CreateList_Sq(head,n);
printf("请输入删除学号的范围mink和maxk:");
int mink,maxk;
scanf("%d%d",&mink,&maxk);
head=DeleteList_Sq(head,mink,maxk);
ShowList_Sq(head);
return 0;
}
student *InitList_Sq(stu curr)
{
curr=(stu)malloc(sizeof(student));
if(!curr) return NULL;
printf("请输入学号、姓名、成绩:");
//scanf("%d%s%d",&curr->ID,curr->name,&curr->grades);
scanf("%d",&curr->ID);
curr->next=NULL;
return curr;
}
student *CreateList_Sq(stu head,int n)
{
stu curr=NULL,tmp=NULL;
int i;
for(i=0;i<n;i++)
{
curr=InitList_Sq(curr);
if(head==NULL)
head=curr;
else
tmp->next=curr;
tmp=curr;
}
return head;
}
void ShowList_Sq(stu head)
{
stu curr=head;
printf("学号\t姓名\t成绩\n");
while(curr)
{
printf("%d\t%s\t%d\n",curr->ID,curr->name,curr->grades);
curr=curr->next;
}
}
//删除链表某个节点;程序运行时输出崩溃??
student *DeleteList_Sq(stu head,int mink,int maxk)
{
stu curr=head,pre=NULL,tmp=NULL;
while(curr)
{
tmp=curr->next;
if(tmp->ID==mink)
{
curr->next=tmp->next;
free(tmp);
}
curr=curr->next;
}
return head;
}
CreateList_Sq你确定这个能成功吗?
在delete之前,你先show一把看看