从实际应用角度出发重新定于线性链表及其基本操作

本文基于严蔚敏《数据结构》C语言版,重新阐述线性链表的概念,并探讨其在C++和C语言中的实现。文章中提供的代码可能在某些情况下需要调试才能正确运行,旨在帮助读者深入理解链表的基本操作。
摘要由CSDN通过智能技术生成

根据严蔚敏数据结构(C语言版)第37页改写

#include<iostream>
using namespace std;

#define ElemType int

typedef struct LNode//结点
{
	ElemType data;
	struct LNode *next;
}*Link, *Position;

typedef struct//链表
{
	Link head, tail;//头结点和尾节点
	int len;//链表长度(数据元素个数)
}LinkList;

bool MakeNode(Link &p, ElemType e)
//分配由p针指向值为e的结点
{
	if (!(p = (Link)malloc(sizeof(LNode))))return false;
	p->data = e;
	return true;
}

void FreeNode(Link &p)
//释放p指向结点
{
	free(p);
}

bool InitList(LinkList &L)
//构造一个空链表
{
	L.head = L.tail = NULL;
	L.len = 0;
	return true;
}

bool DestroyList(LinkList &L)
//摧毁线性表L,L即将不再存在
{
	Link p = L.head;
	Link q;
	while (p != L.tail)
	{
		q = p->next;
		free(p);
		p = q;
	}
	free(p);
	L.len = 0;
	return true;
}

bool ClearList(LinkList &L)
//将L重置为空标,释放原链表结点
{
	if (L.head == L.tail)return true;
	Link p = L.head->next;
	Link q;
	while (
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值