#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef int Datatype;
typedef struct node
{
Datatype data;
struct node *next;
}linknode;
linknode*create_empty_linklist()
{
linknode*head=NULL;
head = (linknode*)malloc(sizeof(linknode));
if(NULL==head)
{
printf("fail to malloc\n");
return NULL;
}
bzero(head,sizeof(linknode));
return head;
};
int is_empty_linklist(linknode*head)
{
return head->next==NULL ?1 :0;
}
void insert_head_linklist(linknode *head,Datatype data)
{
linknode *temp = NULL;
temp = (linknode*)malloc(sizeof(linknode));
if(NULL == temp)
{
printf("fail to malloc\n");
return;
}
temp->data=data;
temp->next=head->next;
head->next=temp;
return;
}
void insert_tail_linklist(linknode*head,Datatype data)
{
linknode*temp=NULL;
temp=(linknode*)malloc(sizeof(linknode));
if(NULL==temp)
{
printf("fail to malloc\n");
return ;
}
temp->data=data;
linknode*p=head;
while(p->next!=NULL)
{
p=p->next;
}
temp->next=p->next;
p->next=temp;
return;
}
void printf_linklist_data(linknode*head)
{
linknode*p=NULL;
p=head;
while(p->next!=NULL)
{
printf("%d ",p->next->data);
p=p->next;
}
putchar('\n');
return;
}
void insert_order_linklist(linknode*head,Datatype data)
{
linknode*temp=NULL;
temp=(linknode*)malloc(sizeof(linknode));
if(NULL==temp)
{
printf("fail to malloc\n");
return ;
}
temp->data=data;
linknode*p=head;
while(p->next!=NULL && temp->data > p->next->data)
{
p=p->next;
}
temp->next=p->next;
p->next=temp;
return;
}
void delete_assign_linklist(linknode*head,Datatype data)
{
linknode *p=head;
linknode *q=NULL;
while(p->next!=NULL)
{
if(p->next->data==data)
break;
p=p->next;
}
q=p->next;
p->next=p->next->next;
free(q);
q=NULL;
return ;
}
void delete_samedata_linklist(linknode*head,Datatype data)
{
linknode*p=head;
linknode*q=NULL;
while(p->next!=NULL)
{
if(p->next->data==data)
{
q=p->next;
free(q);
p->next=p->next->next;
}else{
p=p->next;
}
}
return ;
}
void reverse_linklist(linknode*head)
{
linknode*p=head->next->next;
head->next->next=NULL;
while(p!=NULL)
{
insert_head_linklist(head,p->data);
p=p->next;
}
return;
}
void clean_all_node_linklist(linknode*head)
{
linknode*p=head;
linknode*q=NULL;
while(p!=NULL)
{
printf_linklist_data(p);
q=p->next;
free(p);
p=NULL;
p=q;
}
return;
}
int main(int argc, const char *argv[])
{
linknode*head=NULL;
Datatype data;
int i=0;
head=create_empty_linklist();
printf("please input 5 num:");
for(i=0;i<5;i++)
{
scanf("%d",&data);
insert_head_linklist(head,data);
}
while(getchar()!='\n');//清缓存
printf_linklist_data(head);
/*
clean_all_node_linklist(head);
reverse_linklist(head);
printf_linklist_data(head);
delete_assign_linklist(head,3);
printf_linklist_data(head);
delete_samedata_linklist(head,2);
printf_linklist_data(head);
printf("please input 5 num:");
for(i=0;i<5;i++)
{
scanf("%d",&data);
insert_tail_linklist(head,data);
}
printf_linklist_data(head);
insert_order_linklist(head,3);
printf_linklist_data(head);
*/
return 0;
}