修改后的单链表几个操作
#include <stdio.h>
struct node
{
int num;
struct node *next;
};
typedef struct node Node;
typedef struct node *Link;
creat_node(Link *head)
{
*head = NULL;
}
/*void insert_head_node(Link *newnode,Link *head)
{
(*newnode) -> next = *head;
*head = *newnode;
*/
/*void insert_tail_node(Link *newnode,Link *head)
{
Link temp = *head;
if(temp == NULL)
{
(*newnode) -> next = NULL;
temp = *newnode;
}
else
{
Link temp = *head;
while((temp -> next) != NULL)
{
temp -> next = temp;
}
temp -> next = *newnode;
(*newnode) -> next = NULL;
}
}
*/
int insert_mid_node(Link *newnode,Link *head,int num)
{
if(*head == NULL)
{
return -1;
}
Link temp = *head;
while(temp != NULL)
{
if(temp -> num = num)
{
(*newnode)->next = temp -> next;
temp -> next = *newnode;
return 0;
}
temp = temp -> next;
}
return 0;
}
int display_node(Link *head)
{
if(*head == NULL)
{
return -1;
}
else
{
Link temp = *head;
while(temp != NULL)
{
printf("%d\n",temp -> next);
temp = temp -> next;
}
}
}
int main()
{
int i = 0;
Link head;
Link newnode;
creat_node(&head);
for(i = 0; i < 10; i++)
{
newnode = (Link)malloc(sizeof(Node)) ;
newnode->num = i+1;
// insert__head_node(&newnode,&head);
// insert_tail_node(&newnode,&head);
}
newnode = (Link)malloc(sizeof(Node));
newnode -> num =11;
insert_mid_node(&newnode,&head,5);
display_node(&head);
return 0;
}