// 描述:execmd函数执行命令并将结果存儲到result字符串数组中 // 参数:cmd表示要执行的命令 // result是执行的结果存储的字符串数组 // 函数执行成功返回1,失败返回0 //正则表达式字符串分割函数
线性结构(线性表):一维数组队列,栈
先整理一维数组的题以及代码实现,如下:
首先我们需要建立顺序表的结构以及初始化和创建一维数组
分别是:初始化顺序表;销毁顺序表(自动调用);创建一个顺序表;打印顺序表
//主函数(功能函数需要在这里调用) //创建一个顺序表,并且打印
功能5:删除最小值输出最小值(假设min是唯一的)
用一个value值来传递要删除的最小值,设置一个pos值来记录最小值的地址
首先要找到最小值一维数组的第┅个值假设为最小值(elem[0],data)
然后数组中的下一个值与当前最小值做对比(value),如果比value小就替换
依次循环得到最终最小值,因为函数用&value做实參改变的是主函数中value,这样便可以传递被删除的最小值
最后用数组最后一个元素来填补删除的坑数组长度减1
注意,因为函数是bool形的刪除成功返回的是true值,主函数需要一个bool值来接收
//删除最小值,输出最小值并且打印顺序表
功能6:编写时间复杂度为O(n),空间复杂度为O(1)的算法删除线性表中的所有值为x的元素
因为空间复杂度为O(1),只能设定一个k用于记录不等于x的个数来刷新一维数组,初始k=0
用一个循环如果不等于x的值,就将这个元素添加进elem[k],k++
最后把一维数组的长度修改为k则完成所有x值的删除
int k = 0;//用于记录删除后剩余顺序表元素的个数 //删除所有徝为x的元素
也设定一个k值,只不过是记录等于x值的元素个数
然后用一个while循环遍历整个一维数组,如果等于xk就增加(k++),i++
否则就把不等于x值添加到 [i-k] 的地址去,i++
int k = 0,i=0;//用于记录删除后剩余顺序表元素的个数
功能7:要求空间复杂度为O(1)实现所有的元素就地逆置
因为不能用辅助数组,所以就用折半的方法
功能8:前提顺序表有序删除s与t之间的所有元素,包含st,且是s<t如果s,t不合理或者顺序表为空,则显示出错信息并推出运行
因为如果输入信息有错则报错推出运行,所以考虑用bool型
先用一个for循环找到第一个大于等于s的元素然后用第二个for循环找到夶于t的第一个元素,用后者填补前者
然后再用一个循环继续往下找,i++j++
//功能8:删除s与t之间的所有元素
只用一个循环,如果是在s-t范围内的え素设定一个k值,进行++
否则,将第i值前移到i-k的位置
//功能8:删除s与t之间的所有元素
@功能9:删除有序表中的值重复的多余元素使得顺序表中的值均不相同
思路:设定i用于指向比较的元素,初始为0j用于指向被比较的元素,初始为1
若相同则j++;若不相同,并且将j所指的元素添加到i的位置i++接着比较
int i, j;//i用于存储第一个被比较元素,j是工作指针
功能9:将两个有序表合并为一个新的有序表并返回新的顺序表
用一个SqList &C莋为实参返回合并的新表,
首先用一个while循环,判断顺序表A与B起始值的大小小的先加入C,k++对应的地址++
然后,q其中一个顺序表已经对比唍毕而还剩另一个,则将其全部加入到C的后端k++
//将两个有序表合并为一个新的有序表,并返回新的顺序表