顺序表实现(下)(C语言)

几道相关例题,帮助大家更好理解顺序表.

文章目录

前言

  • 一、顺序表
  • 二、创建顺序表并初始化
  • 三.删除非递减顺序表L中的重复元素
  • 四.在非递减顺序表中删除[s,t]之间的元素
  • 五.设计算法逆置顺序表L,并将序列L循环左移
  • 六.顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中都不存在相同元素
  • 七.给定两个非空集合A和B,分别用升序顺序表La,Lb存储,设计算法求解A交B 
  • 八.给定两个非空集合A和B,分别用升序表La与Lb存储,设计算法求解A-B(A中元素减去B中有的元素)
  • 九.测试
  • 总结


前言

几道相关例题,帮助大家更好理解顺序表.


一、顺序表

typedef int Elemtype;
//顺序表的动态分配
typedef struct Sqlist {Elemtype* qlist;int length;int maxsize;
};
//定义打印顺序表函数
void print(Sqlist L) {for (int i = 0; i < L.length; i++) {//顺序遍历顺序表printf("%d ", L.qlist[i]);}printf("\n顺序表长度为:%d\n", L.length);printf("总大小为:%d\n", L.maxsize);
}

二、创建顺序表并初始化

//例1:定义创建顺序表并初始化函数
void InitSqlist(Sqlist& L) {//初始化空间为20,长度为15,{ 0,1,2,3,4,4,4,5,6,7,7,8,8,9,9 }L.maxsize = Max;L.length = 15;int arr[15] = { 0,1,2,3,4,4,4,5,6,7,7,8,8,9,9 };L.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (L.maxsize));for (int i = 0; i < L.length; i++) {L.qlist[i] = arr[i];}
}

 三.删除非递减顺序表L中的重复元素

//例6:删除非递减顺序表L中的重复元素
void deletesame(Sqlist &L) {int curlenth = 0;for (int i = 0; i < L.length; i++) {//每次区元素与新表最后一个元素进行比较如果不相等加入新表if (curlenth == 0 || L.qlist[i] != L.qlist[curlenth - 1]) {L.qlist[curlenth++] = L.qlist[i];}}L.length = curlenth;
}

四.在非递减顺序表中删除[s,t]之间的元素

//例7:在非递减顺序表中删除[s,t]之间的元素
void deletest2(Sqlist& L, int s, int t) {int curlength = 0;int i = 0;for (; i < L.length; i++) {//从前往后找第一个大于或等于s的元素的位置if (L.qlist[i] >= s) {break;}}curlength = i;i = L.length - 1;for (; i >= 0; i--) {//从后往前找第一个小于或等于t的元素的位置if (L.qlist[i] <= t) {break;}}i= i + 1;//指向下一个元素才是要复制的元素for (;  i< L.length; i++) {//复制元素L.qlist[curlength++] = L.qlist[i];}L.length = curlength;
}

 五.设计算法逆置顺序表L,并将序列L循环左移

//例8:设计算法逆置顺序表L,并将序列L循环左移
//定义逆置函数
void reverse1(Sqlist& L) {int low = 0;int high = L.length - 1;while (low < high) {//设置low和high指针对表中元素进行两两交换Elemtype tmp = L.qlist[low];L.qlist[low] = L.qlist[high];L.qlist[high] = tmp;low++;high--;}
}
void reverse2(Sqlist& L,int low ,int high) {while (low < high) {Elemtype tmp = L.qlist[low];L.qlist[low] = L.qlist[high];L.qlist[high] = tmp;low++;high--;}
}
void ROL(Sqlist &L, int r) {reverse2(L, 0, L.length - 1);//整体逆置reverse2(L, 0, r-1);//前r个元素逆置reverse2(L, r, L.length - 1);//后面元素逆置
}

 reverse1是直接将顺序表全部逆置,reverse2是给定起始和终止逆置.

顺序表的循环左移r位,就是先整体逆置,前r个元素逆置,后面元素逆置.

六.顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中都不存在相同元素

(1)将两表合并,两表中元素都储存在C中

(2)表A有m+n个存储空间,将A,B两表合并所有元素都存储到A中

(3)对表A进行简单插入排序

//例9:顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中都不存在相同元素
//(1)将两表合并,两表中元素都储存在C中
//创建La和Lb
void creatLaLb(Sqlist& La, Sqlist& Lb) {La.maxsize = 11;La.length = 6;int arr1[6] = { 0,2,4,7,8,9 };La.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (La.maxsize));for (int i = 0; i < La.length; i++) {La.qlist[i] = arr1[i];}Lb.maxsize = 11;Lb.length = 5;int arr2[5] = { 10,6,5,3,1 };Lb.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (Lb.maxsize));for (int i = 0; i < Lb.length; i++) {Lb.qlist[i] = arr2[i];}
}
//归并排序思想
void mergesort1(Sqlist& La, Sqlist& Lb, Sqlist& Lc) {int length = La.length + Lb.length;Lc.qlist = (Elemtype*)malloc(sizeof(Elemtype) * length);assert(Lc.qlist);Lc.maxsize = length;int curlength = 0;int i = 0;int j = Lb.length-1;while (i < La.length && j >=0) {if (La.qlist[i] > Lb.qlist[j]) {Lc.qlist[curlength] = Lb.qlist[j];curlength++;j--;}else {Lc.qlist[curlength] = La.qlist[i];curlength++;i++;}}while (i < La.length) {Lc.qlist[curlength++] = Lb.qlist[i];i++;}while (j >=0) {Lc.qlist[curlength++] = Lb.qlist[j];j--;}Lc.length = curlength;
}
//(2)表A有m+n个存储空间,将A,B两表合并所有元素都存储到A中
void mergesort2(Sqlist& La, Sqlist& Lb) {int curlength = 0;int i = La.length-1;//A表后int j = 0;//B表头while (i >= 0 && j < Lb.length) {//将A表与B表元素进行比较将大的存入A表后if (La.qlist[i] > Lb.qlist[j]) {La.qlist[La.maxsize - curlength - 1] = La.qlist[i];curlength++;i--;}else {La.qlist[La.maxsize - curlength - 1] = Lb.qlist[j];curlength++;j++;}}while (i >= 0) {//将A表剩余元素直接复制到A表中La.qlist[La.maxsize - curlength - 1] = La.qlist[i];curlength++;i--;}while (j < Lb.length) {//将B表剩余元素直接复制到A表中La.qlist[La.maxsize - curlength - 1] = Lb.qlist[j];curlength++;j++;}La.length = La.length + Lb.length;
}
//(3)对表A进行简单插入排序
void selectsort(Sqlist& L) {int i = 0;int j = 0;while (i < L.length) {//每次选取一个元素Elemtype e = L.qlist[i];j = i - 1;while (j >= 0 && e < L.qlist[j]) {//寻找插入位置L.qlist[j + 1] = L.qlist[j];j--;}L.qlist[j + 1] = e;i++;}
}

七.给定两个非空集合A和B,分别用升序顺序表La,Lb存储,设计算法求解A交B 

//例10:给定两个非空集合A和B,分别用升序顺序表La,Lb存储,设计算法求解A交B
//创建两个升序La表和Lb表
void creatLaLb2(Sqlist& La, Sqlist& Lb) {La.maxsize = 20;La.length = 11;int arr1[11] = { 1,1,2,2,3,3,4,4,5,5,6 };La.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (La.maxsize));for (int i = 0; i < La.length; i++) {La.qlist[i] = arr1[i];}Lb.maxsize = 20;Lb.length = 11;int arr2[11] = { 1,1,2,2,4,4,5,5,6,6,7 };Lb.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (Lb.maxsize));for (int i = 0; i < Lb.length; i++) {Lb.qlist[i] = arr2[i];}
}
//求解A交B
void intersect(Sqlist &La,Sqlist &Lb) {int curlength = 0;int i = 0;int j = 0;while (i < La.length && j < Lb.length) {//A表和B表元素进行两两比较如果相等加入新表if (La.qlist[i] == Lb.qlist[j]) {La.qlist[curlength] = La.qlist[i];i++;j++;curlength++;}else if(La.qlist[i] > Lb.qlist[j]) {//B表当前元素小于表A当前元素B表下表加一j++;}else {//A表当前元素小于表B当前元素A表下表加一i++;}}La.length = curlength;//元素个数改变
}

 八.给定两个非空集合A和B,分别用升序表La与Lb存储,设计算法求解A-B(A中元素减去B中有的元素)

//例11:给定两个非空集合A和B,分别用升序表La与Lb存储,设计算法求解A-B(A中元素减去B中有的元素)
//算法思想跟上一题一样
void except(Sqlist& La, Sqlist& Lb) {int curlength = 0;int i = 0;int j = 0;while (i < La.length && j < Lb.length) {if (La.qlist[i] == Lb.qlist[j]) {//相等下标都相加i++;j++;}else if (La.qlist[i] > Lb.qlist[j]) {//a>b,B下标增加j++;}else {//a<b说明当前A中元素一定是B中没有的La.qlist[curlength] = La.qlist[i];curlength++;i++;}}while (i < La.length) {//将A表剩余元素复制到新表La.qlist[curlength] = La.qlist[i];curlength++;i++;}La.length = curlength;//元素个数改变
}

九.测试

全部代码:

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<malloc.h>
#include<assert.h>
#define Max 20typedef int Elemtype;
//顺序表的动态分配
typedef struct Sqlist {Elemtype* qlist;int length;int maxsize;
};
//定义打印顺序表函数
void print(Sqlist L) {for (int i = 0; i < L.length; i++) {//顺序遍历顺序表printf("%d ", L.qlist[i]);}printf("\n顺序表长度为:%d\n", L.length);printf("总大小为:%d\n", L.maxsize);
}//例1:定义创建顺序表并初始化函数
void InitSqlist(Sqlist& L) {//初始化空间为20,长度为15,{ 0,1,2,3,4,4,4,5,6,7,7,8,8,9,9 }L.maxsize = Max;L.length = 15;int arr[15] = { 0,1,2,3,4,4,4,5,6,7,7,8,8,9,9 };L.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (L.maxsize));for (int i = 0; i < L.length; i++) {L.qlist[i] = arr[i];}
}
//例6:删除非递减顺序表L中的重复元素
void deletesame(Sqlist &L) {int curlenth = 0;for (int i = 0; i < L.length; i++) {//每次区元素与新表最后一个元素进行比较如果不相等加入新表if (curlenth == 0 || L.qlist[i] != L.qlist[curlenth - 1]) {L.qlist[curlenth++] = L.qlist[i];}}L.length = curlenth;
}
//例7:在非递减顺序表中删除[s,t]之间的元素
void deletest2(Sqlist& L, int s, int t) {int curlength = 0;int i = 0;for (; i < L.length; i++) {//从前往后找第一个大于或等于s的元素的位置if (L.qlist[i] >= s) {break;}}curlength = i;i = L.length - 1;for (; i >= 0; i--) {//从后往前找第一个小于或等于t的元素的位置if (L.qlist[i] <= t) {break;}}i= i + 1;//指向下一个元素才是要复制的元素for (;  i< L.length; i++) {//复制元素L.qlist[curlength++] = L.qlist[i];}L.length = curlength;
}
//例8:设计算法逆置顺序表L,并将序列L循环左移
//定义逆置函数
void reverse1(Sqlist& L) {int low = 0;int high = L.length - 1;while (low < high) {//设置low和high指针对表中元素进行两两交换Elemtype tmp = L.qlist[low];L.qlist[low] = L.qlist[high];L.qlist[high] = tmp;low++;high--;}
}
void reverse2(Sqlist& L,int low ,int high) {while (low < high) {Elemtype tmp = L.qlist[low];L.qlist[low] = L.qlist[high];L.qlist[high] = tmp;low++;high--;}
}
void ROL(Sqlist &L, int r) {reverse2(L, 0, L.length - 1);//整体逆置reverse2(L, 0, r-1);//前r个元素逆置reverse2(L, r, L.length - 1);//后面元素逆置
}
//例9:顺序表A和B的元素个数分别为m,n.A表升序排序,B表降序排序,两表中都不存在相同元素
//(1)将两表合并,两表中元素都储存在C中
//创建La和Lb
void creatLaLb(Sqlist& La, Sqlist& Lb) {La.maxsize = 11;La.length = 6;int arr1[6] = { 0,2,4,7,8,9 };La.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (La.maxsize));for (int i = 0; i < La.length; i++) {La.qlist[i] = arr1[i];}Lb.maxsize = 11;Lb.length = 5;int arr2[5] = { 10,6,5,3,1 };Lb.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (Lb.maxsize));for (int i = 0; i < Lb.length; i++) {Lb.qlist[i] = arr2[i];}
}
//归并排序思想
void mergesort1(Sqlist& La, Sqlist& Lb, Sqlist& Lc) {int length = La.length + Lb.length;Lc.qlist = (Elemtype*)malloc(sizeof(Elemtype) * length);assert(Lc.qlist);Lc.maxsize = length;int curlength = 0;int i = 0;int j = Lb.length-1;while (i < La.length && j >=0) {if (La.qlist[i] > Lb.qlist[j]) {Lc.qlist[curlength] = Lb.qlist[j];curlength++;j--;}else {Lc.qlist[curlength] = La.qlist[i];curlength++;i++;}}while (i < La.length) {Lc.qlist[curlength++] = Lb.qlist[i];i++;}while (j >=0) {Lc.qlist[curlength++] = Lb.qlist[j];j--;}Lc.length = curlength;
}
//(2)表A有m+n个存储空间,将A,B两表合并所有元素都存储到A中
void mergesort2(Sqlist& La, Sqlist& Lb) {int curlength = 0;int i = La.length-1;//A表后int j = 0;//B表头while (i >= 0 && j < Lb.length) {//将A表与B表元素进行比较将大的存入A表后if (La.qlist[i] > Lb.qlist[j]) {La.qlist[La.maxsize - curlength - 1] = La.qlist[i];curlength++;i--;}else {La.qlist[La.maxsize - curlength - 1] = Lb.qlist[j];curlength++;j++;}}while (i >= 0) {//将A表剩余元素直接复制到A表中La.qlist[La.maxsize - curlength - 1] = La.qlist[i];curlength++;i--;}while (j < Lb.length) {//将B表剩余元素直接复制到A表中La.qlist[La.maxsize - curlength - 1] = Lb.qlist[j];curlength++;j++;}La.length = La.length + Lb.length;
}
//(3)对表A进行简单插入排序
void selectsort(Sqlist& L) {int i = 0;int j = 0;while (i < L.length) {//每次选取一个元素Elemtype e = L.qlist[i];j = i - 1;while (j >= 0 && e < L.qlist[j]) {//寻找插入位置L.qlist[j + 1] = L.qlist[j];j--;}L.qlist[j + 1] = e;i++;}
}
//例10:给定两个非空集合A和B,分别用升序顺序表La,Lb存储,设计算法求解A交B
//创建两个升序La表和Lb表
void creatLaLb2(Sqlist& La, Sqlist& Lb) {La.maxsize = 20;La.length = 11;int arr1[11] = { 1,1,2,2,3,3,4,4,5,5,6 };La.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (La.maxsize));for (int i = 0; i < La.length; i++) {La.qlist[i] = arr1[i];}Lb.maxsize = 20;Lb.length = 11;int arr2[11] = { 1,1,2,2,4,4,5,5,6,6,7 };Lb.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (Lb.maxsize));for (int i = 0; i < Lb.length; i++) {Lb.qlist[i] = arr2[i];}
}
//求解A交B
void intersect(Sqlist &La,Sqlist &Lb) {int curlength = 0;int i = 0;int j = 0;while (i < La.length && j < Lb.length) {//A表和B表元素进行两两比较如果相等加入新表if (La.qlist[i] == Lb.qlist[j]) {La.qlist[curlength] = La.qlist[i];i++;j++;curlength++;}else if(La.qlist[i] > Lb.qlist[j]) {//B表当前元素小于表A当前元素B表下表加一j++;}else {//A表当前元素小于表B当前元素A表下表加一i++;}}La.length = curlength;//元素个数改变
}
//例11:给定两个非空集合A和B,分别用升序表La与Lb存储,设计算法求解A-B(A中元素减去B中有的元素)
//算法思想跟上一题一样
void except(Sqlist& La, Sqlist& Lb) {int curlength = 0;int i = 0;int j = 0;while (i < La.length && j < Lb.length) {if (La.qlist[i] == Lb.qlist[j]) {//相等下标都相加i++;j++;}else if (La.qlist[i] > Lb.qlist[j]) {//a>b,B下标增加j++;}else {//a<b说明当前A中元素一定是B中没有的La.qlist[curlength] = La.qlist[i];curlength++;i++;}}while (i < La.length) {//将A表剩余元素复制到新表La.qlist[curlength] = La.qlist[i];curlength++;i++;}La.length = curlength;//元素个数改变
}
int main() {printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对InitSqlist进行测试!\n");Sqlist L;InitSqlist(L);print(L);//打印顺序表以及信息printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对deletesame进行测试!\n");deletesame(L);print(L);InitSqlist(L);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对deletest2进行测试!\n");deletest2(L, 4, 7);print(L);InitSqlist(L);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对reverse2进行测试!\n");reverse1(L);print(L);InitSqlist(L);reverse2(L, 0, L.length - 1);print(L);InitSqlist(L);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对ROL进行测试!\n");print(L);ROL(L,3);print(L);InitSqlist(L);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对例8进行测试!\n");Sqlist La,Lb,Lc;printf("创建La和Lb顺序表\n");creatLaLb(La, Lb);print(La);print(Lb);printf("归并La和Lb顺序表\n");mergesort1(La, Lb, Lc);print(Lc);printf("归并La和Lb顺序表用原空间\n");mergesort2(La, Lb);print(La);print(Lb);creatLaLb(La, Lb);//初始化一下Sqlist LA;LA.maxsize = Max;LA.length = 12;int arr[12] = { 3,6,2,1,7,8,4,5,9,10,12,11 };LA.qlist = (Elemtype*)malloc(sizeof(Elemtype) * (LA.maxsize));for (int i = 0; i < L.length; i++) {LA.qlist[i] = arr[i];}print(LA);printf("对表A进行简单选择插入排序!\n");selectsort(LA);print(LA);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对例10进行测试!\n");creatLaLb2(La, Lb);print(La);print(Lb);intersect(La, Lb);print(La);printf("+++++++++++++++++++++++++++++++++++++++\n");printf("对例11进行测试!\n");creatLaLb2(La, Lb);print(La);print(Lb);except(La, Lb);print(La);return 0;}

 输出结果:


总结

写了几个经典的顺序表的题目,有些函数作用是创建表的,可以省略,主要是解决问题的思路和方法,输出结果比较常所以我分成了两张图片,大家自行比对,或者直接复制代码上机运行,有问题的地方可以私信我.

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/333405.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

伺服电机:伺服电机基础知识

一、什么是伺服 伺服&#xff0c;英文Servo&#xff0c;来源于拉丁语Servus&#xff0c;意思是奴隶&#xff0c;奴隶的特点就是完全按照主任的指令去做事。伺服电机&#xff0c;也就是严格按照控制指令来运行的电机。利用伺服电机搭建起来的系统或者机构就叫伺服系统或者伺服机…

SSH远程访问出现Permission denied(password)解决方法

首先&#xff0c;这个不是密码输错了的问题&#xff1b; 1、在主机先ping一下服务器 ping XXX.XXX.XX.XXX (服务器ip地址) 如果pin成功了&#xff0c;说明可以进行连接 查看服务器的ip ifconfig2、主机连接服务器 &#xff08;服务器的ip&#xff09; ssh testXXX.XXX.XX.…

一站式低代码开发平台JNPF初探

市面上的低代码产品有很多&#xff0c;如何找到一款难出错、高性价比的低代码开发平台&#xff1f; 从企业级应用构建角度来看&#xff0c;完成一个应用复杂度随着技术进步、需求细化、业务变化逐步提升的软件程序。用户也想要有更好的体验&#xff0c;复杂度更是成倍的提升。 …

算法第十一天-组合总和Ⅳ

组合总和Ⅳ 题目要求 解题思路 来自[负雪明烛] 题目有个明显的提示&#xff1a;求组合的个数&#xff0c;而不是每个组合。如果是要求出每个组合&#xff0c;那么必须使用回溯法&#xff0c;保存所有路径。但是如果是组合个数&#xff0c;一般都应该想到[动态规划]的解法。 直…

企业常用的几种实用的加速FTP传输方式

FTP作为互联网上最早应用的文件传输协议之一&#xff0c;同时也是企业内外常用的文件和数据交换方式。然而&#xff0c;随着数据量的增加和对传输速度、稳定性、安全性等要求的提高&#xff0c;FTP传输面临一系列挑战&#xff0c;给企业的业务效率和数据安全带来了困扰。本文将…

第二百五十四回

文章目录 1. 概念介绍2. 思路与方法2.1 实现思路2.2 实现方法 3. 代码与效果3.1 示例代码3.2 运行效果 4. 内容总结 我们在上一章回中介绍了"如何给图片添加阴影"相关的内容&#xff0c;本章回中将介绍自定义Radio组件.闲话休提&#xff0c;让我们一起Talk Flutter吧…

LiveGBS流媒体平台GB/T28181功能-操作日志如何配置保留天数过滤记录的日志根据操作名称过滤记录日志

LiveGBS功能操作日志菜单如何配置保留天数过滤记录的日志根据操作名称过滤记录日志 1、操作日志2、配置保留天数3、配置不记录操作日志3.1、不记录所有3.2、不记录指定操作名称 4、相关问题4.1、级联操作日志筛选 5、搭建GB28181视频直播平台 1、操作日志 LiveGBS操作日志菜单…

【PostgreSQL】在DBeaver中实现序列、函数、视图、触发器设计

【PostgreSQL】在DBeaver中实现序列、函数、触发器、视图设计 基本配置一、序列1.1、序列使用1.1.1、设置字段为主键&#xff0c;数据类型默认整型1.1.2、自定义序列&#xff0c;数据类型自定义 1.2、序列延申1.2.1、理论1.2.2、测试1.2.3、小结 二、函数2.1、SQL直接创建2.1.1…

Git命令+github仓库克隆

Git github Git常用命令 开始 git init #创建仓库 git status #查看仓库的状态 git status -s #简单的查看仓库的状态 git ls-files #查看暂存区的内容 git reflog #查看操作的历史记录 暂存区 git add git add <file&g…

NSIS 生成安装包如何导入文件夹的问题

在制作自己的小工具的时候&#xff0c;需将自己的程序生成一个安装包 这里是需要的文件目录config &#xff0c;和主文件的文件目录dist 进行脚本编写的时候&#xff0c;需要加上这一句&#xff0c;使打包的软件中包含config文件夹。 Section "MainSection" SEC01Se…

oracle 19c容器数据库数据加载和传输-----SQL*Loader(一)

目录 数据加载 &#xff08;一&#xff09;控制文件加载 1.创建用户执行sqlldr 2.创建文本文件和控制文件 3.查看表数据 4.查看log文件 &#xff08;二&#xff09;快捷方式加载 1.system用户执行 2.查看表数据 3.查看log文件 外部表 数据加载和传输的工具&#xff1…

typora好看的颜色主题包

typora好看的颜色主题包 一、base.user.css二、orangeheart.css三、插入文件 一、base.user.css h1, h2, h3, h4, strong {font-weight: 600; }#write {counter-reset: h2; }h1 {counter-reset: h2; }h2 {counter-reset: h3; }h3 {counter-reset: h4; }h4 {counter-reset: h5; …