[数据结构C语言版]线性表-单链表(图文详解)

一、概念:

       链表:链表是一种物理存储结构非连续、非顺序的存储结构,但链表在逻辑上连续的,顺序的,而数据元素的逻辑顺序是通过链表中的指针连接次序实现的。

二、单链表操作

     1.增加

         (1)头插法

         (2)尾插法

      2.删除

          只需要找到对应节点,将对应接点的前一个节点指向这个节点的后继,只需要操作一个指针(带有头节点的链表更好实现以上操作)。

三、代码实现(图文解析)

    1.定义一个链表并初始此链表

/*定义一个链表*/
typedef struct Node {
	int data;          //数据域
	struct Node* next; //指针域
}Node;
/*初始化链表*/
Node* InitList(){
	Node* list = (Node*)malloc(sizeof(Node));
	list->data = 0;
	list->next = NULL;
	return list;
}

    

2.头插法建立单链表

/*单链表头插法*/
void HeaderInsert(Node* list,int data){
	Node* node = (Node*)malloc(sizeof(Node));
	node->data = data;
	node->next = list->next;
	list->next = node;
	list->data++;
}

 

 3.尾插法建立单链表

         

/*单链表尾插法*/
void TailInsert(Node* list, int data) {
	Node* Header = list;
	Node* node = (Node*)malloc(sizeof(Node));
	node->data = data;
	node->next = NULL;
	list = list->next;
	while (list->next) {
		list = list->next;
	}
	list->next = node;
	Header->data++;
}

4.单链表删除指定data

/*单链表删除指定data*/
void Delete(Node* list, int data) {
	Node* PreNode = list;
	Node* node = list->next;
	while (node) {
		if (node->data == data) {
			PreNode->next = node->next;
			free(node);
			list->data--;
		}
		PreNode = node;
		node = node->next;
	}
}

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值