单链表基本操作复习

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;
}


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值