为什么只能运行几次?
#include<stdio.h>
#include<malloc.h>
struct stu
{
int data;
struct stu *next;
}*head;
void insert(int);
void main(){
int data;
do{
scanf("%d",&data);
insert(data);
}while(data!=0);
}
void insert(int data)
{
stu *temp=head;
stu *previous;//拖后指针,总是指向刚刚处理完的指针
stu *newnode;//新的结点指针,总是指向一个新的结点
newnode=(struct stu*)malloc(sizeof(struct stu));
newnode->data=data;
newnode->next=0;
if(head==0)
{
head=newnode;
}
else
{
while(((temp->data)<=data)&&(temp!=0)) //找到一个适合的位置,这个地方你可以用学号
{
previous=temp;
temp=temp->next;
}
if(temp==head)//若头结的数据值大于要插入的结点的数
{ //据值,新结点即为链表的头,原来的头变为当前的链表的头的后继
newnode->next=head;
head=newnode;
}
else
{
newnode->next=temp;
previous->next=newnode;
}
}
}