数据结构小实践

本文涉及的产品
云服务器 ECS,每月免费额度200元 3个月
云服务器ECS,u1 2核4GB 1个月
简介: 【4月更文挑战第13天】数据结构小实践

2000元阿里云代金券免费领取,2核4G云服务器仅664元/3年,新老用户都有优惠,立即抢购>>>


阿里云采购季(云主机223元/3年)活动入口:请点击进入>>>,


阿里云学生服务器(9.5元/月)购买入口:请点击进入>>>,

单向链表的概念

单向链表是一种线性数据结构,它由一系列节点组成,每个节点包含数据和指向下一个节点的指针。在单向链表中,数据元素之间是单向连接的,每个节点只有一个指针指向下一个节点,而没有指向前一个节点的指针。因此,一旦形成链表,就不能从任意节点直接访问前一个节点,只能从头节点开始沿着指针依次访问每个节点
单向链表的基本操作

单向链表的主要操作包括插入、删除和遍历等。

插入操作:在链表的任意位置插入一个新节点。这通常涉及到创建一个新的节点,然后将其插入到链表的特定位置,并更新相应节点的指针2。

删除操作:删除链表中指定位置的节点。这通常需要找到要删除的节点,然后将前一个节点的指针跳过该节点,指向下一个节点,最后释放该节点的资源2。

遍历操作:遍历链表,访问链表中的每个节点。这可以通过从头节点开始,逐步移动到尾节点来实现

下列给定程序是建立一个带头结点的单向链表,并用随机函数为各结点赋值。函数fun的功能是将单向链表结点(不包括头结点)数据域为偶数的值累加起来,并且作为函数值返回。

include

include

include

typedef struct aa

{ int data;

struct aa *next;

} NODE;

int fun (NODE *h)

{ int sum=0;

NODE *p;

p=h->next;

/*found**/

while(p->next)

   { if(p->data%2==0)

         sum+=p->data;

/*found**/

      p=h->next;

   }

return sum;

}

NODE *creatlink(int n)

{ NODE h,p,*s;

int i;

h=p=(NODE*)malloc(sizeof(NODE));

for(i=1;i<n;i++)

{ s=(NODE*)malloc(sizeof(NODE));

           s->data=rand()%16;

           s->next=p->next;

           p->next=s;

           p=p->next;

}

p->next=NULL;

return h;

}

outlink(NODE *h)

{ NODE *p;

p=h->next;

printf("\n\n The LIST :\n\n HEAD");

while(p)

{ printf("->%d",p->data);

  p=p->next;}

printf("\n");

}

void main()

{ NODE *head; int sum;

system("CLS");

head=creatlink(10);

outlink(head);

sum=fun(head);

printf("\nSUM=%d",sum);

}

【解题思路】

本题考查的是在这种链表的数据结构中,必须利用指针变量才能实现,即一个节点中应包含一个指针变量,用以存放下一节点的地址。建立单项链表的一般步骤是:建立头指针→建立第一个节点→头指针指向第一个节点→建立第二个节点→第一个节点的指针与指向第二个节点→…→最后一个节点的指针指向null。本题重点是:了解链表的基本思想和相关算法,理解有关链表插入及删除时,指针移动的先后顺序问题,注意指针的保存和归位。while循环条件是判断链表是否结束,所以改为while (p!=NULL),要指向下个节点所以改为p=p->next。
注意事项

在使用单向链表时,需要注意的是,由于链表的节点之间是通过指针相连的,因此在插入和删除节点时,需要特别小心处理这些指针关系,以确保链表的正确性和完整性。同时,由于单向链表不支持快速反向访问,所以在需要频繁访问链表尾部或中间节点的场景下,可能不如双向链表或数组方便

目录
相关文章
|
9月前
|
存储 算法 Java
数据结构:八大常用数据结构
数据结构是计算机存储、组织数据的方式;通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构的优良将直接影响着我们程序的性能;常用的数据结构有:数组(Array)、栈(Stack)、队列(Queue)、链表(Linked List)、树(Tree)、图(Graph)、堆(Heap)、散列表(Hash)等;
18800 14
|
1月前
|
存储 机器学习/深度学习 人工智能
数据结构基础(一)
数据结构是计算机科学中的一个重要概念,用于组织和存储数据以便有效地访问和修改。它是计算机科学的基础之一,几乎在所有领域都有应用,包括算法设计、数据库管理系统、编译器构建等。
19 0
 数据结构基础(一)
|
2月前
|
存储 算法 Java
【数据结构】详细讲解常见的数据结构(通俗易懂)
【数据结构】详细讲解常见的数据结构(通俗易懂)
27 0
|
7月前
|
存储 前端开发 C++
C++基础篇之什么是 数据结构
C++基础篇之什么是 数据结构
|
8月前
|
算法 搜索推荐
为什么要学习数据结构?
为什么要学习数据结构?
|
存储 算法 搜索推荐
大数据开发基础的数据结构和算法的数据结构的数组
在大数据开发中,数据结构和算法是非常重要的基础知识。数组是常见的数据结构之一,在大数据开发中也有广泛的应用。本文将介绍数组在数据结构和算法中的基础知识,以及它们在大数据开发中的应用。
114 0
|
存储 算法 大数据
大数据开发基础的数据结构和算法的数据结构的链表
在大数据开发中,数据结构和算法是非常重要的基础知识。链表是常见的数据结构之一,在大数据开发中也有广泛的应用。本文将介绍链表在数据结构和算法中的基础知识,以及它们在大数据开发中的应用。
94 0
|
存储 算法 大数据
大数据开发基础的数据结构和算法的数据结构的字符串
当我们谈到大数据开发时,数据结构和算法是其中不可或缺的一部分。而在数据结构中,字符串也是一个非常重要的概念,因为它是大多数应用程序中使用的基本数据类型之一。
71 0
|
存储 算法 安全
【C#基础】C# 常用数据结构
编程语言 C# 常用数据结构的介绍。
133 0
【C#基础】C# 常用数据结构
|
算法 JavaScript 前端开发
http://www.vxiaotou.com