数据结构 串的堆分配及基本操作
来源:互联网 发布:linux系统工程师面试题 编辑:程序博客网 时间:2024/05/21 04:19
堆分配
#include <iostream>#include <cstdlib>#include <cstring>using namespace std;#define TRUE 1#define FALSE 0#define OK 1#define ERROR 0#define INFEASIBLE -1#define OVERFLOW -2typedef struct{char *ch;int length;}hstring;int strassign(hstring &T, char *chars){int i, j;i = strlen(chars);if (i == 0){T.ch = NULL;T.length = 0;}else{T.ch = (char *)malloc(i*sizeof(char));for (j = 0; j < i; j++)T.ch[j] = chars[j];T.length = i;}return OK;}int sstrlength(hstring s){return s.length;}int strcompare(hstring s, hstring T){int i;for (i = 0; i < s.length&&i < T.length; ++i)if (s.ch[i] != T.ch[i])return s.ch[i] - T.ch[i];return s.length - T.length;}int concat(hstring &T, hstring s1, hstring s2){int i, j;T.ch = (char *)malloc((s1.length + s2.length)*sizeof(char));for (i = 0; i < s1.length; i++)T.ch[i] = s1.ch[i];for (i = s1.length; i < s1.length + s2.length; i++)T.ch[i] = s2.ch[i - s1.length];T.length = s1.length + s2.length;return OK;}int substring(hstring &sub, hstring s, int pos, int len){int i;if (pos<1 || pos>s.length || len<0 || len>s.length - pos + 1)return ERROR;if (len == 0){sub.ch = NULL;sub.length = 0;}else{sub.ch = (char *)malloc(len*sizeof(char));for (i = 0; i < len; i++)sub.ch[i] = s.ch[i+pos-1];sub.length = len;}for (i = 0; i < len; i++)cout<<sub.ch[i];return OK;}void shuchu(hstring s){int i;for (i = 0; i < s.length; i++)cout << s.ch[i];}int main(){hstring T, s1, s2, sub;char *chars1 = "abcde", *chars2 = "jikei";int m, n;cout << "将chars1的值赋予s1:";strassign(s1, chars1);shuchu(s1);cout << endl;cout<<"s1的长度为:"<<sstrlength(s1)<<endl;cout << "将chars1的值赋予s1:";strassign(s2, chars2);shuchu(s2);cout << endl;cout << "s2的长度为:"<<sstrlength(s2) << endl;cout << "判断s1和s2的大小关系:";if (strcompare(s1, s2)==0)cout<< "s"<<"1"<<"="<<"s"<<"2" << endl;else if (strcompare(s1, s2) < 0)cout << "s" << "1" << "<" << "s" << "2" << endl;else if (strcompare(s1, s2) > 0)cout << "s" << "1" << ">" << "s" << "2" << endl;concat(T, s1, s2);cout << "将s1与s2连接成新的串T:";shuchu(T);cout << endl;cout << "输入m,n,用来查找串T中第m个字符开始,长度为n的子串sub" << endl;cin >> m >> n;cout << "输出子串sub:";substring(sub, T, m, n);cout << endl;system("pause");return 0;}
0 0
- 数据结构 串的堆分配及基本操作
- 串的堆分配的基本操作
- 数据结构 串的堆分配
- 串采用堆分配存储结构的基本操作
- 数据结构:字符串的堆分配存储结构,基本操作实现和测试。
- 【数据结构基础】最大堆的基本操作
- 堆及基本操作
- 字符串的基本操作--基于堆分配存储
- 堆的概念及基本操作实现
- 算法与数据结构-堆的基本操作C语言实现
- 算法与数据结构-堆的基本操作C语言实现
- 基本数据结构――堆的基本概念及其操作
- 数据结构串的基本操作及KMP算法
- 数据结构——串的堆分配存储
- 【数据结构】串的堆分配表示与实现
- C语言数据结构——串的堆分配
- 堆分配串一些操作
- 堆的基本操作
- 17 记一次 NOAUTH Authentication required
- 详解工业光魔动作捕捉神器iMoCap
- 查找子串
- 迷茫的我,学了Photoshop能做什么工作?
- HDU 4289 Control (最大流最小割)
- 数据结构 串的堆分配及基本操作
- SSL JudgeOnline 1868——谁是组长
- Js基础
- Android Studio工程结构
- 一些Linux/vim命令
- 2.leapmotion之开发指南
- Angular2 之 结构型指令
- VL53L0X简介
- [数位DP 高精度 拓扑排序 bitset] BZOJ 2913 [Poi1997]XOR Gates