单项链表的尾插法,支持任意节点的插入
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int date;
struct node *next;
}Node;
//void insert_head(Node **head, int data)
//{
// Node *tmp = (Node *)malloc(sizeof(Node));
// tmp->date = data;
// tmp->next = NULL;
// if(*head == NULL){
// *head = tmp;
// }
// else {
// tmp->next = (*head);
// (*head) = tmp;
// }
//}
void insert_tail(Node *head, int data)
{
Node *p = NULL;
Node *slow = head;
Node *tmp = (Node *)malloc(sizeof(Node));
tmp->date = data;
tmp->next = NULL;
if((head)->next == NULL){
(head)->next = tmp;
// printf("%d====\n", (*head)->date);
}
else{
//printf("%p---%p--\n", *p, head);
p = head;
while((p)->next != NULL){
(p) = (p)->next;
printf("%d-------\n", (head)->date);
}
(p)->next = tmp;
printf("%d====\n", (head)->date);
}
}
void show_list(Node *head)
{
// printf("-±—%d–±--\n", (*head)->date);
// printf("----%p----\n", *head);
Node * tmp = head;
Node * p = head;
tmp = (tmp)->next;
printf("----%p----\n", p);
printf("----%p----\n", tmp);
while((tmp) != NULL){
printf("%d ", (tmp)->date);
(tmp) = (tmp)->next;
}
printf("\n");
// printf("----%p----\n", *head);
}
void link(){
Node *head = (Node *)malloc(sizeof(Node));
head->next = NULL;
insert_tail(head, 1);
insert_tail(head, 2);
insert_tail(head, 3);
insert_tail(head, 4);
// printf("%d ", (head)->date);
show_list(head);
}
int main(void)
{
link();
printf(“±--------------+\n”);
return 0;
}