第4周 【项目三】 单链表应用

该博客详细介绍了如何实现单链表的三个操作:1. 算法实现单链表的逆置;2. 设计并测试将两个已知长度的单链表拼接的算法;3. 判断单链表是否递增的算法。通过创建头文件linklist.h、linklist.cpp以及main.cpp,博主李欣豪提供了完整的代码实现和测试过程。
摘要由CSDN通过智能技术生成
/*  

*Copyright  (c)2017,烟台大学计算机与控制工程学院      

*All rights reservrd.           

*作者:李欣豪 

*完成时间:2017年12月7日      

*版本号:v1.0      

*问题描述:1、设计一个算法,将一个带头结点的数据域依次为a1,a2,…,an(n≥3)的单链表的所有结点逆置,即第一个结点的数据域变为an,…,最后一个结点的数据域为a1。实现这个算法,并完成测试。

                  2、已知L1和L2分别指向两个单链表的头结点,且已知其长度分别为m、n,请设计算法将L2连接到L1的后面。实现这个算法,完成测试,并分析这个算法的复杂度。

                  3、设计一个算法,判断单链表L是否是递增的。实现这个算法,并完成测试。


一、建立单链表算法库:

① 建立头文件linklist.h

#ifndef LINKLIST_H_INCLUDED
#define LINKLIST_H_INCLUDED

typedef int ElemType;
typedef struct LNode        //定义
单链表是一种常见的数据结构,其中每个节点包含数据和指向下一个节点的指针。在计算机科学中,八进制求和通常指的是将一串数字以八进制的形式进行累加,然后将最终的求和结果转换为八进制表示。这里我们将结合单链表和八进制求和的概念,通过一个简单的代码示例来展示如何实现这一过程。 首先,我们需要定义单链表的节点结构和创建单链表,然后编写一个函数来遍历单链表,并将每个节点的值累加起来。最后,我们需要一个函数来将累加后的十进制结果转换为八进制数。 下面是一个可能的代码实现(假设我们使用的是C语言): ```c #include <stdio.h> #include <stdlib.h> // 定义单链表节点结构体 typedef struct ListNode { int value; struct ListNode *next; } ListNode; // 创建单链表节点 ListNode* createNode(int value) { ListNode *newNode = (ListNode*)malloc(sizeof(ListNode)); newNode->value = value; newNode->next = NULL; return newNode; } // 向单链表中添加节点 void appendNode(ListNode **head, int value) { ListNode *newNode = createNode(value); if (*head == NULL) { *head = newNode; } else { ListNode *current = *head; while (current->next != NULL) { current = current->next; } current->next = newNode; } } // 八进制求和 void octalSum(ListNode *head) { int sum = 0; while (head != NULL) { sum += head->value; head = head->next; } // 将十进制求和结果转换为八进制 printf("八进制求和结果为: "); int temp = sum; while (temp > 0) { printf("%d", temp % 8); temp /= 8; } printf("\n"); } // 主函数,用于测试 int main() { ListNode *head = NULL; appendNode(&head, 1); appendNode(&head, 2); appendNode(&head, 3); // 假设这里链表中的数据代表的是八进制数 appendNode(&head, 7); appendNode(&head, 4); octalSum(head); // 释放链表内存 ListNode *current = head; while (current != NULL) { ListNode *temp = current; current = current->next; free(temp); } return 0; } ``` 这段代码首先定义了单链表节点结构体,并提供了创建节点、添加节点到链表尾部和进行八进制求和的函数。在主函数中,我们创建了一个包含几个节点的单链表,并通过`octalSum`函数计算了链表中所有节点值的累加和,并将结果以八进制的形式输出。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值