/*
// Project: single linkeed list (数据结构 单链表)
// Date: 2021-10-7 09:26:57
// Author: Frank Wang
// InitList(LinkList &L) 参数:单链表L 功能:初始化 时间复杂度 O(1)
// ListLength(LinkList L) 参数:单链表L 功能:获得单链表长度 时间复杂度O(n)
// ListInsert(LinkList &L,int i,ElemType e)
// ListDelete(LinkList &L,int i) 参数:单链表L,位置i 功能:删除位置i元素 时间复杂度O(n)[加入了查找]
// 若已知p指针指向的删除 最好是O(1),因为可以与后继结点交换数据域,然后删除后继结点。
// 最坏是O(n),即从头查找p之前的结点,然后删除p所指结点
// LocateElem(LinkList L,ElemType e) 参数:单链表L,元素e 功能:查找第一个等于e的元素,返回指针 时间复杂度O(n)
*/
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
using namespace std;
#define Status int
#define ElemType int
//单链表结点数据结构
typedef struct LNode
{
ElemType data;//数据域
struct LNode *next;//指针域
}LNode,*LinkList;
//**************************基本操作函数***************************//
//初始化函数
Status InitList(LinkList &L)
{
L = new LNode;//生成头结点 这样删除等操作就不必分第一个结点和其他了
L->next = NULL;
return 1;
}
//获取单链表长度 头结点无数据,不算
int ListLength(LinkList L)
{
LinkList p=L;int sum=0;
while(p)
{
sum++;
p=p->next;
}
return sum-1;//去除头
单链表的基本操作(初始化,前插,后插,删除查找,排序)
最新推荐文章于 2024-06-29 11:23:34 发布
本文详细介绍了C++中单链表数据结构的操作,包括初始化链表、获取链表长度、前插和后插元素、删除指定位置元素以及按值查找元素的功能。代码实现中注重了效率,如插入和删除时避免了不必要的遍历。此外,还提供了遍历输出链表元素和对链表进行排序的功能。
摘要由CSDN通过智能技术生成