数据结构代码

一、实验内容
1.截取子串
2.获取输入的字符串在原串中的位置

fisrt

second

#include <iostream>

#include <algorithm>

#define MAX_SIZE 10000

using namespace std;


void first_way(int *arr, int n)

{

int map[MAX_SIZE] = { 0 };//这里元素最大不超过9999,可以按需求放大一些

for (size_t i = 0; i < n; i++)

{

map[arr[i]]++;

}


int main_elem = 0;

for (size_t i = 0; i < MAX_SIZE; i++)

{

if (map[main_elem] < map[i]) main_elem = i;

}


if (map[main_elem] > n / 2) cout << main_elem << endl;

else cout << -1 << endl;

}


void sec_way(int *arr, int n)

{

sort(arr, arr + n);

int count = 1, max_count = 1;

int main_elem = arr[0];

for (size_t i = 1; i < n; i++)

{

if (arr[i] != arr[i - 1])

{

if (count > max_count)

{

max_count = count;

main_elem = arr[i - 1];

}

count = 0;

}

count++;

}

if (count > n / 2) cout << arr[n - 1] << endl;

if (max_count > n / 2) cout << main_elem << endl;

else cout << -1 << endl;

}

int main()

{

int arr1[8] = { 0, 5, 5, 3, 5, 7, 5, 5 };

int arr2[8] = { 0, 5, 5, 3, 5, 1, 5, 7 };

cout << "第一个数组测试:" << endl;

first_way(arr1, 8);

sec_way(arr1, 8);

cout << "第二个数组测试:" << endl;

first_way(arr2, 8);

sec_way(arr2, 8);

    return 0;

}

温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-11-08

第一个功能的函数:

SqString SubStr(SqString s,int i,int j)//求子串  
{   SqString str;  
    int k;  
    str.length=0;  
    if(i<=0||i>s.length||j<0||i+j-1>s.length)  
        return str;  
    for(k=i-1; k<i+j-1; k++)  
        str.data[k-i+1]=s.data[k];  
    str.length=j;  
    return str;  
}

第二个功能的函数:

int SubPosition(SqString s,SqString t)
{
int i;
for(i=0;i<=s.length-t.length;i++)
{
for(j=0;j<t.length;j++)
if(s.data[i]!=t.data[i])
break;
if(j==t.length)
return i+1;
}
return -1;
}

本回答被网友采纳