【链表篇】单向链表的基础知识

1. 存储方式

typedef struct LINKNODE
{    
     DataType data;         	//节点的值    
     struct LINKNODE* next;  	//指向下一个节点的指针
}LNode;


2. 基本操作
(1)链表的创建             
         在创建链表时,有两种实现方式:第一种,每创建一个新节点,作为新的头结点插入到链表的头部之前;第二种,每创建一个新节点,则插入到链表的尾部后。             
         a. 以下是头插法的实现方式: 

 void CreateList(LNode** head, DataType[] dataArr, unsigned int len) 
 {  
  	//对函数的前置条件进行判断
  	if (!head || !(*head))
  	{  
   		return;
  	}                                                                                                                                   	
  
  	unsigned int i; 
  	for (i = 0; i < len; i++)
  	{  
   		//申请新的节点  
   		LNode* newNode = (LNode* )malloc(sizeof(LNode));  
         
    		//申请失败,则退出   
   		if (!newNode)   
   		{   
    			return;  
   		}
    
   		newNode->data = dataArr[i];    
   		newNode->next = *head;   
   		*head = newNode; 
  	}
 }


          b. 尾插法的实现与头插法是类似的,所以这里就不给出来了。
 
 (2)链表的销毁            
           要销毁一个链表主要是将链表的所有节点都释放掉,以下是实现代码:            

  void FreeList(LNode** head) 
  {  
   	while (*head)
   	{ 
    		LNode* nextNode = (*head)->next;  
    		free(*head);      
   		(*head) = nextNode;        
   	}                                                                                                                                 	
   	(*head) = NULL;   
  }    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值