DS 线性表3:单链表应用

本篇博客基于前一节的单链表基础知识,设计并实现了三个实用操作:1) 单链表节点的逆置,通过void Reverse(LinkList *&L)函数完成;2) 将两个已知长度的单链表L1和L2拼接,利用void Link(LinkList &L1, LinkList &L2)函数;3) 检查单链表L是否递增。所有操作都经过了测试验证。" 105396102,5847565,PyTorch深度学习:卷积、池化与权值初始化,"['深度学习', 'PyTorch', '卷积神经网络', 'CNN', '池化', '神经网络']
摘要由CSDN通过智能技术生成

 Request:

在前一节建设“单链表”算法库 基础上设计


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

    提示:实现算法时,可以设计下面的函数:void Reverse(LinkList *&L)

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

    提示:实现算法时,可以设计下面的函数:void Link(LinkList &L1, LinkList &L2)

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

#ifndef LIST_H_INCLUDED
#define LIST_H_INCLUDED
typedef char ElemType;
typedef struct LNode{
    ElemType data;
    struct LNode *next;
}LinkList;
void InitList(LinkList *&L);
bool ListEmpty(LinkList *L);
void CreateListH(LinkList *&L, ElemType a[], int n);
void CreateListT1(LinkList *&L, ElemType a[], int n);
void CreateListT2(LinkList *&L, ElemType a[], int n);
void DestoryList(LinkList *&L);
int ListLength(LinkList *L);
void DispList(LinkList *L);
bool GetElem(LinkList *L, int i, ElemType &e);
int LocateElem(LinkList *L, ElemType e);
bool ListInsert(LinkList *&L, int i, ElemType e);
bool ListDelete(LinkList *&L, int i, ElemType &e);
void split(LinkList *&L, LinkList *&L1, LinkList *&L2);
void delmaxnode(LinkList *&L);
void sortUp(LinkList *&L);

void Reverse(LinkList *&L);
void Link(LinkList *&L3, LinkList *L1, LinkList *L2);
void Increase(LinkList *L);
#endif // LIST_H_INCLUDED
#include <stdio.h>
#include "list.h"

int main(){
    LinkList *Li, *Li1, *Li2, *Li3;
    InitList(Li);
    InitList(Li3);
    ElemType x[7]= {5,8,7,2,5,4,9};
    ElemType e1, e2;
    /*首插法创建单链表*/
    CreateListH(Li, x, 7);
    printf("首插法创建单链表: ");
    DispList(Li);
    printf("\n");
    /*判断结点中的数据域是否单向递增*/
    Increase(Li);
    printf("\n");
    /*尾插法创建单链表*/
    CreateListT2(Li, x, 7);
    printf("尾插法创建单链表: ");
    D
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值