删除链表中最小值结点
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L)
{
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL) return false;
L->next=NULL; return true;
}
LinkList list_TailInsert(LinkList &L)
{
InitList(L);
int x;
LNode *s,*r=L;
do
{
scanf("%d",&x);
if(x!=9999){
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;}
else break;
}while(1);
r->next=NULL;
return L;
}
void DeleteMinData(LinkList &L)
{
LNode *min,*p=L->next,*q;
int i=1,flag;
min=p;
while(p)
{
if(p->data<min->data)
{
min=p;
flag=i;
}
p=p->next;
i++;
}
p=L;
for(i=0;i<flag-1;i++)
{
p=p->next;
}
q=p->next;
p->next=q->next;
free(q);
}
int main()
{
LinkList L;
list_TailInsert(L);
DeleteMinData(L);
LNode *p=L->next;
while(p)
{
printf("%d\t",p->data);
p=p->next;
}
}
|