当前位置: 首页 > article >正文

实现将线性表分割为三个循环链表,每个循环链表表示的线性表中只含一类字符。

算法思想:    首先定义了表示节点和循环链表的结构,并实现了初始化循环链表和节点插入操作的函数。然后在`main`函数中,我们创建了表示线性链表和三个循环链表的指针,并调用`splitList`函数将线性表分割为三个循环链表。


#include <stdio.h>
#include <stdlib.h>

// 定义线性链表节点结构
typedef struct Node {
    char data;  // 数据域
    struct Node *next;  // 指针域
} Node;

// 初始化一个循环链表
void initCircularList(Node **head) {
    *head = (Node *)malloc(sizeof(Node));
    (*head)->next = *head;
}

// 将一个节点插入到循环链表的尾部
void insertNode(Node *head, char data) {
    Node *newNode = (Node *)malloc(sizeof(Node));
    newNode->data = data;
    newNode->next = head->next;
    head->next = newNode;
}

// 分割线性表为三个循环链表
void splitList(Node *linearList, Node **charList, Node **digitList, Node **otherList) {
    Node *p = linearList->next;  // 指向第一个数据结点
    while (p != linearList) {
        // 根据数据类型插入到对应的循环链表中
        if (isalpha(p->data)) {
            insertNode(*charList, p->data);
        } else if (isdigit(p->data)) {
            insertNode(*digitList, p->data);
        } else {
            insertNode(*otherList, p->data);
        }
        p = p->next;  // 继续处理下一个节点
    }
}

int main() {
    Node *linearList = (Node *)malloc(sizeof(Node));  // 假设已经创建并初始化了线性链表

    Node *charList, *digitList, *otherList;
    initCircularList(&charList);
    initCircularList(&digitList);
    initCircularList(&otherList);

    // 调用分割函数,将线性表分割为三个循环链表
    splitList(linearList, &charList, &digitList, &otherList);

    return 0;
}

 


http://www.kler.cn/a/154777.html

相关文章:

  • Unity音频导入设置
  • 安全,服务器证书和SSL连接
  • nacos-operator在k8s集群上部署nacos-server2.4.3版本踩坑实录
  • Python sys模块介绍
  • 实验6记录网络与故障排除
  • 【MYSQL】数据库日志 (了解即可)
  • oops-framework框架 之 界面管理(三)
  • Docker容器间网络共享
  • 高新技术企业研发人员绩效考核存在的问题
  • 蓝桥杯第1037题子串分值和 C++ 字符串 逆向思维 巧解
  • [传智杯 #3 初赛] 课程报名
  • 淘宝/天猫商品详情API接口丨京东商品详情丨1688商品详情丨接口key密钥获取方式
  • WPF面试题高级篇
  • 神经网络 代价函数
  • JWT和Session的区别
  • VUE语法-(readonly的用法)将数据设置成只读模式
  • 组件化编程
  • 基于景区智慧灯杆、智能指路牌基础设施的景区建设应用
  • 6 Redis缓存设计与性能优化
  • Windows远程桌面提示出现身份验证错误 要求的函数不支持
  • 爬虫学习(一)
  • web前端之JavaScrip的笔试题
  • Docker基本操作---镜像与容器操作
  • dp-基础版动态规划(动态规划每日一题计划)10/50
  • 力扣.特定深度节点链表(java BFS解法)
  • 深入了解Java8新特性-日期时间API:LocalDateTime类