无头头插单链表:
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
per *head_list(per *one,int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
temp->next = one;
return temp;
}
void show(per *head)
{
if(NULL == head)
{
return;
}
while(head)
{
printf("age is %d\n",head->age);
head = head->next;
}
}
int main()
{
per *head = NULL;
head = head_list(head,10);
head = head_list(head,20);
head = head_list(head,30);
head = head_list(head,40);
head = head_list(head,50);
show(head);
return 0;
}
无头尾插单链表:
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
per *tail_list(per *one, int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
per *head = one;
if(NULL == one)
{
return temp;
}
while(one->next)
{
one = one->next;
}
one->next = temp;
return head;
}
void show(per *head)
{
if(NULL == head)
{
return;
}
while(head)
{
printf("age is %d\n",head->age);
head = head->next;
}
}
int main()
{
per *head = NULL;
head = tail_list(head,10);
head = tail_list(head,20);
head = tail_list(head,30);
head = tail_list(head,40);
head = tail_list(head,50);
show(head);
return 0;
}
无头头插单链表逆转
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
per *head_list(per *one, int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
temp->next = one;
return temp;
}
per *reverse(per *head)
{
if(NULL == head)
{
return;
}
per *p,*q,*r;
p = head;
q = p->next;
r = q->next;
head->next = NULL;
while(r)
{
q->next = p;
p = q;
q = r;
r = r->next;
}
q->next = p;
head = q;
return head;
}
void show(per *head)
{
if(NULL == head)
{
return;
}
while(head)
{
printf("age is %d\n",head->age);
head = head->next;
}
}
int main()
{
per *head = NULL;
head = head_list(head,10);
head = head_list(head,20);
head = head_list(head,30);
head = head_list(head,40);
head = head_list(head,50);
show(head);
printf("==================\n");
head = reverse(head);
show(head);
return 0;
}
无头尾插单链表逆转:
#include <stdio.h>
#include <stdlib.h>
typedef struct person
{
int age;
struct person *next;
}per;
per *tail_list(per *one, int num)
{
per *temp = (per *)malloc(sizeof(per));
temp->age = num;
per *head = one;
if(NULL == one)
{
return temp;
}
while(one->next)
{
one = one->next;
}
one->next = temp;
return head;
}
per *reverse(per *head)
{
if(NULL == head)
{
return;
}
per *p, *q, *r;
p = head;
q = p->next;
r = q->next;
head->next = NULL;
while(r)
{
q->next = p;
p = q;
q = r;
r = r->next;
}
q->next = p;
head = q;
return head;
}
void show(per *head)
{
if(NULL == head)
{
return;
}
while(head)
{
printf("age is %d\n",head->age);
head = head->next;
}
}
int main()
{
per *head = NULL;
head = tail_list(head,10);
head = tail_list(head,20);
head = tail_list(head,30);
head = tail_list(head,40);
head = tail_list(head,50);
show(head);
printf("=================\n");
head = reverse(head);
show(head);
return 0;
}