list.h:
#ifndef _SINGLE_LIST_H_
#define _SINGLE_LIST_H_
typedef struct data
{
int a;
}DATA;
typedef struct node
{
DATA *data_ptr;
struct node *next;
}NODE;
void init_list(NODE **header);
void add_node(NODE *header,int b);
void delete_node(NODE *header);
void insert_node(NODE *header,int b);
void destroy_list(NODE *header);
void visit_list(NODE *header);
void inversion_list(NODE *header);
#endif
list.c:
#include <stdio.h>
#include <stdlib.h>
#include "single_list.h"
//初始化
void init_list(NODE **ptr)
{
NODE *temp = NULL;
temp = (NODE *)malloc(sizeof(NODE));
temp->data_ptr = (DATA *)malloc(sizeof(DATA));
temp->data_ptr->a = 0;
temp->next = NULL;
*ptr = temp;
}
//增加
void add_node(NODE *header,int b)
{
NODE *temp = header;
while(temp!= NULL)
{
if(temp->next == NULL)
{
temp->next = (NODE *)malloc(sizeof(NODE));
temp->next->data_ptr = (DATA *)malloc(sizeof(DATA));
temp->next->data_ptr->a=b;
temp->next->next=NULL;
header->data_ptr->a+=1;
break;
}
temp = temp->next;
}
}
//插入
void insert_node(NODE *header,int b)
{
NODE *temp =header->next;
while(temp!=NULL)
{
if(temp->data_ptr->a==7)
{
NODE *new_node = (NODE *)malloc(sizeof(NODE));
new_node->data_ptr = (DATA *)malloc(sizeof(DATA));
new_node->data_ptr->a = b;
new_node->next = temp->next;
temp->next=new_node;
header->data_ptr->a+=1;
break;
}
temp = temp->next;
}
}
//删除
void delete_node(NODE *header)
{
NODE *temp=header->next;
NODE *temp1;
while(temp!=NULL)
{
if(temp->data_ptr->a==7)
{
temp1=temp->next;
temp->next = temp->next->next;
free(temp1->data_ptr);
temp1->data_ptr = NULL;
free(temp1);
header->data_ptr->a-=1;
break;
}
temp = temp->next;
}
}
//遍历
void visit_list(NODE *header)
{
NODE *temp = header->next;
while(temp!=NULL)
{
printf("data is %d\n",temp->data_ptr->a);
temp=temp->next;
}
}
//反转
void inversion_list(NODE *header)
{
NODE *temp = header->next;
NODE *q = NULL;
NODE *temp1 = NULL;
while(temp)
{
temp1 = temp->next;
temp->next = q;
q = temp;
temp = temp1;
}
header->next = q;
}