1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > C语言实现单链表的基本操作

C语言实现单链表的基本操作

时间:2021-07-28 08:07:45

相关推荐

C语言实现单链表的基本操作

链表是一种链式存储结构,其特点是用一组任意的存储单元存储数据元素。链表最重要的概念是结点,一个结点表示链表中的一个数据元素,结点由储存数据元素的信息和存放指向下一个节点的的指针(单、双链表的最后一个节点除外,它们存储的是一个空指针NULL)两部分构成 。下面用C语言为大家讲解单链表的插入数据和删除数据操作。

1. 单链表的特点

(1)逻辑上相邻的元素在物理上不一定相邻。

(2)删除和插入操效率高,随机访问效率低。

2.单链表定义

typedef struct ListNode

{

type data; //数据域,type为数据的具体类型

struct ListNode *next; //指向下一个节点的指针

}ListNode, *LinkList;

3. 单链表基本操作

(1)插入数据

//将新元素插入到i位置

int ListInsert(ListNode list, int i, type newData)

{

LinkList p = list;

int j = 0;

while (NULL != p && j < i - 1)

{

p = p->next;

j++;

}

//找到插入位置

if (NULL != p && j == i - 1)

{

LinkList newNode = (LinkList)mallock(sizeof(ListNode));

newNode->data = newData;

newNode->next = p->next;

p->next = newNode;

return 0;

}

else

{ return -1;}

}

(2)删除数据

//删除第i个元素

void ListDelete(LinkList list, int i)

{

LinkList p = list;

int j = 0;

while (NULL != p && j < i - 1)

{

p = p->next;

j++;

}

if (NULL != p && j == i - 1 && p->next != NULL)

{

LinkList pdel = p->next;

p->next = pdel->next;

free(pdel);

return 0;

}

else

{ return -1;}

}

4.顺序表和单链表比较

(1)顺序表逻辑相邻的元素物理上也相邻,单链表逻辑相邻的元素物理上不一定相邻(用指针连接)

(2)顺序表随机访问元素时间复杂度为O(1),单链表的为O(n)

(3)顺序表插入/删除元素的时间复杂度为O(n),,单链表插入/删除的时间复杂度为O(1)

该文图片均来自网络!今天我们就讲到这里,如果有问题欢迎大家评论哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。