#include <stdio.h>
#include <stdlib.h>
struct link *AppendNode(struct link *head);
void DisplyNode(struct link *head);
void DeleteMemory(struct link *head);
struct link *DeleteNode(struct link *head,int nodeDate);
struct link *InsertNode(struct link *head,int nodeDate);
struct link{
int date;
struct link *next;
};
int main()
{
int i=0;
struct link *head=NULL;
char c;
printf("DO YOU WANT TO APPEND A NEW CODE(Y/ N)?");
scanf(" %c",&c);
while(c=='Y'||c=='y')
{
head=AppendNode(head);
DisplyNode(head);
printf("DO YOU WANT TO APPEND A NEW CODE(Y/N)?");
scanf(" %c",&c);
i++;
}
printf(" %d次 \n",i);
printf("do you want insert date(y/n)?");
scanf(" %c",&c);
if(c=='y')
{
int x;
scanf("%d",&x);
InsertNode(head,x);
DisplyNode(head);
}
DeleteMemory(head);
}
struct link *AppendNode(struct link *head)
{
struct link *p=NULL,*pr=head;
int date;
p=(struct link*)malloc(sizeof(struct link));
if(p==NULL)
{
printf("NO ENOUGH TO MOLLOC");
exit(0);
}
if(head==NULL)
{
head=p;
}else{
while(pr->next != NULL )
{
pr=pr->next ;
}
pr->next = p;
}
p->next =NULL;
scanf("%d",&p->date );
return head;
}
void DisplyNode(struct link *head)
{
struct link *p=head;
while(p!=NULL)
{
printf("%d ",p->date );
p=p->next ;
}
}
void DeleteMemory(struct link *head)
{
struct link *p=head,*pr=NULL;
while(p != NULL)
{
pr=p;
p=p->next ;
free(pr);
}
}
struct link *DeleteNode(struct link *head,int nodeDate)
{
struct link *p=head,*pr=NULL;
if(head==NULL)
{
printf("空表");
return head;
}
if(head->date ==nodeDate)
{
head=head->next ;
}else{
p=p->next;
}
while(p->next !=NULL&&p->date != nodeDate)
{
pr=p;
p=p->next ;
}
if(p==NULL)
{
printf("未找到\n");
}else{
pr->next = p->next ;
free(p);
}
return head;
}
struct link *InsertNode(struct link *head,int nodeDate)
{
struct link *p=NULL,*pr=head,*temp=NULL;
p=(struct link* )malloc(sizeof(struct link));
if(head==NULL)
{
head=p;
p->date = nodeDate;
}else{
while(pr->date <= nodeDate&&pr->next != NULL )
{
temp=pr;
pr=pr->next ;
}
if(pr->next ==NULL)
{
pr->next =p;
p->date = nodeDate;
}else{
temp->next =p;
p->next =pr;
p->date =nodeDate;
}
return head;
}
}