2021数据结构与算法实验合集

简介: 2021数据结构与算法实验合集

文章目录

第十四周 哈希查找

A. DS哈希查找—线性探测再散列

题目描述
 定义哈希函数为H(key) = key%11,输入表长(大于、等于11)。输入关键字集合,用线性探测再散列构建哈希表,并查找给定关键字。
--程序要求--
若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio
程序中若include多过一个头文件,不看代码,作0分处理
不允许使用第三方对象或函数实现本题的要求
输入
 测试次数t
每组测试数据为:
哈希表长m、关键字个数n
n个关键字(关键字为互不相同的正整数)
查找次数k
k个待查关键字
输出
对每组测试数据,输出以下信息:
构造的哈希表信息,数组中没有关键字的位置输出NULL
对k个待查关键字,分别输出:0或1(0—不成功,1—成功)、比较次数、查找成功的位置(从1开始)
样例输入
1
12 10
22 19 21 8 9 30 33 4 15 14
4
22
56
30
17
样例输出
22 30 33 14 4 15 NULL NULL 19 8 21 9
1 1 1
0 6
1 6 2
0 1
提示
// 问题 A: DS哈希查找—线性探测再散列
#include <iostream>
using namespace std;
#define INF -99
int main()
{
    int t;
    cin >> t;
    while (t--)
    {
        int m, n;
        cin >> m >> n;
        int *a = new int[m];
        for (int i = 0; i < m; i++)
            a[i] = INF;
        // 建表
        while (n--)
        {
            int num;
            cin >> num;
            int di = 1;
            int h = num % 11;
            if (a[h] == INF)
            {
                a[h] = num;
                continue;
            }
            while (true)
            {
                int temp = (h + di) % m;
                if (a[temp] == INF)
                {
                    a[temp] = num;
                    break;
                }
                else
                {
                    di++;
                }
            }
        }
        for (int i = 0; i < m; i++)
        {
            if (a[i] == INF)
                cout << "NULL"
                     << " ";
            else
                cout << a[i] << " ";
        }
        cout << endl;
        int k;
        cin >> k;
        while (k--)
        {
            int f;
            cin >> f;
            int h = f % 11;
            int times = 0;
            int di = 1;
            int flag = 0;
            int tf = 0;
            int temp = h;
            /**************
              * 查找分三种情况:
              * 1. 要找的关键字的hash地址为空
              * 2. 要找的关键字的hash地址不为空且等于关键字
              * 3. 要找的关键字的hash地址不为空,也不等于关键字,则进行线性探测
              * 
              * 
              * **********/
            if (a[h] == INF)
            { // 第一种情况
                cout << 0 << " " << 1 << endl;
            }
            else
            {
                if (a[h] == f)
                { // 第二种情况
                    cout << 1 << " " << 1 << " " << h + 1 << endl;
                    continue;
                }
                times++;
                while (true)
                { // 第三种情况
                    int temp = (h + di) % m;
                    times++;
                    if (a[temp] == f)
                    {
                        cout << 1 << " " << times << " " << temp + 1 << endl;
                        flag = 1;
                        break;
                    }
                    else if (a[temp] == INF)
                    {
                        break;
                    }
                    di++;
                } // while
                if (flag == 0)
                {
                    cout << 0 << " " << times << endl;
                }
            }
        }
    }
    return 0;
}

B. DS哈希查找—二次探测再散列(关键字互不相同)

题目描述
定义哈希函数为H(key) = key%11。输入表长(大于、等于11),输入关键字集合,用二次探测再散列构建哈希表,并查找给定关键字。
输入
测试次数t
每组测试数据格式如下:
哈希表长m、关键字个数n
n个关键字(关键字为互不相同的正整数)
查找次数k
k个待查关键字
输出
对每组测试数据,输出以下信息:
构造的哈希表信息,数组中没有关键字的位置输出NULL
对k个待查关键字,分别输出:
0或1(0—不成功,1—成功)、比较次数、查找成功的位置(从1开始)
样例输入
1
12 10
22 19 21 8 9 30 33 4 41 13
4
22
15
30
41
样例输出
22 9 13 NULL 4 41 NULL 30 19 8 21 33
1 1 1
0 3
1 3 8
1 6 6
提示
// 问题 B: DS哈希查找—二次探测再散列(关键字互不相同)
#include<iostream>
using namespace std;
#define INF -99
int main()
{
    int t;
    cin >> t;
    while( t-- ){
        int m, n;
        cin >> m >> n;
        int * a = new int[m+5]; 
        for( int i=0; i<m; i++) a[i] = INF;
        // 建表
        while( n-- ){
            int num ; 
            cin >> num;
            int di = 1;
            int h = num%11;
            h %= m;
            if(a[h]==INF){
                a[h] = num;
                continue;
            }
            while( true ){
                int t1 = (h+di*di)%m;
                int t2 = (h-di*di)%m;
                while(t1>=m){
                    t1-=m;
                }
                while(t2<0){
                    t2+=m;
                }
                /*******
                 * 重点: 这里一定要注意对t2的取值范围进行处理,小于0的时候要进行循环移位
                 * 博主在初学这个的时候,可是被他坑惨了呜呜
                 * 
                 * ******/
                if( a[t1%m] == INF ){
                    a[t1] = num;
                    break;
                } else if( a[t2%m] == INF ){
                    a[t2] = num;
                    break;
                }
                else{
                     di++;
                }
            }
        }
        for(int i=0; i<m; i++){
            if(a[i] == INF ) cout<<"NULL"<<" ";
            else cout<<a[i]<<" ";
        }
        cout << endl;
        int k;
        cin >> k;
        while(k--) {
            int f;
            cin >> f;
            int h = f%11;
            int times = 0;
            int flag = 0;              // 没找到为0, 找到为1
            int tf = 0;
            int di = 1;
             /**************
              * 查找分三种情况:
              * 1. 要找的关键字的hash地址为空
              * 2. 要找的关键字的hash地址不为空且等于关键字
              * 3. 要找的关键字的hash地址不为空,也不等于关键字,则进行二次探测(平方)
              * 
              * #### 注意比较次数自加的位置 (在进行比较之前进行次数+1)
              *     1. 先和自身的hash地址比较
              *     2. 和t1 = (h+di*di)%m; t1的地址比较
              *     3. 和t2 = (h-di*di)%m; t2 的地址比较
              * **********/
             if(a[h]==INF){             // 第一种情况     
                 cout<<0<<" "<<1<<endl;
             }
             else{
                 times ++;
                 if( a[h]==f ){         // 第二种情况
                     cout<< 1 << " " << times << " " << h+1 <<endl;
                     continue;
                 }
                 while(true){           // 第三种情况
                    int t1 = (h+di*di)%m;
                    int t2 = (h-di*di)%m;
                    while(t1>=m){
                        t1-=m;
                    }
                    while(t2<0){
                        t2+=m;
                    }
                    times++;
                    if( a[t1%m]==f ){
                         cout<<1<<" "<<times<<" "<<t1+1<<endl;
                         flag = 1;
                         break;
                     }
                    if(a[t1%m]==INF ){  // 遇到NULL就跳出
                        break;
                    }
                    times++;
                    if( a[t2%m]==f ){
                         cout<<1<<" "<<times<<" "<<t2+1<<endl;
                         flag = 1;
                         break;
                     }
                    if( a[t2%m]==INF  ){   //  遇到NULL就跳出
                        break;
                    }
                     di ++;
                     if(di>m/2) {
                         break;
                     };
                 }
                 if( flag==0 ){
                     cout<<0<<" "<<times<<endl;
                 }
             }
        }
    }
    return 0;
}

关于表长的一个小tips

  1. 可以通过设置表长=4k+3,来获取完全剩余系,规避重复搜索
  2. 如果表长不是4k+3, 冲突次数达到一定的阈值,就需要重新建表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ayxIdZYA-1623337233975)(C:\Users\dcs\Desktop\notes\study\MD\03数据结构与算法\pics\image-20210610153428027.png)]


C. DS哈希查找–链地址法

题目描述
 给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表头插入
如果首次查找失败,就把数据插入到相应的位置中
实现哈希查找功能
输入
多组数据,每组数据:
第一行输入n,表示有n个数据
第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开
第三行输入t,表示要查找t个数据
从第四行起,每行输入一个要查找的数据,都是正整数
输出
每行输出对应数据的查找结果
样例输入
6
11 23 39 48 75 62
6
39
52
52
63
63
52
样例输出
6 1
error
8 1
error
8 1
8 2
提示
注意,当两次输入要相同的查找数据,如果第一次查找不成功就会执行插入,那么第二次查找必然成功,且查找次数为1次(因为做表头插入)
例如示例数据中输入两次52,第一次查找失败就把52插入到位置8,第二次查找就成功了,所以第一次输出error,第二次就输出8 1
为什么第三次输入52会输出8 2
需要考虑有多轮数据输入的情况!也就是第一个cin或者scanf需要用while来进行循环,例如 while(cin>>...)
#include<iostream>
using namespace std;
const int is = 11;
int a[is][99];
void move(int k){
    for(int i=a[k][0]; i>0; i--){
        a[k][i+1] = a[k][i];
    }
}
void insert(int data){
    int k = data%is;
    a[k][0] += 1;
    // 采用头插法 ,所以要移动数据
    move(k);
    a[k][ 1 ] = data;
}
void search(int data){
    int k = data%is;
    int flag = 0; 
    for(int j=1, len = a[k][0]; j<=len; j++ ){
        if(a[k][j]==data){
            cout<<k<<" "<<j<<endl;
            flag = 1;
            break;
        }
    }
    if(flag==0){
        cout<<"error"<<endl;
        insert(data);
    }
}
int main(){
    int t;
    while(cin >> t){
        for(int i=0; i<is; i++){
            a[i][0] = 0;        // 0位记录当前表项的数据元素
            for(int j=1; j<99; j++){
                a[i][j] = -1;
            }
        }
        while(t--){
            int temp;
            cin>>temp;
            insert(temp);
        }
        int steps;
        cin >> steps;
        while(steps--){
            /****************
             * 要搜索的值情况分三种:
             * 1. 要搜索的值的记录表没有记录
             * 2. 要搜索的值的记录表有记录,但没有要找的值
             * 3. 要搜索的值的记录表有记录,但有要找的值
             ****************/ 
            int find;
            cin >> find;
            int k = find%is;
            if( a[k][0] == 0){
                cout<<"error"<<endl;
                insert(find);
            }
            else{
                search(find);
            }
        }
    }
    return 0;
}

D. 问题 D: DS哈希查找与增补

题目描述
给出一个数据序列,建立哈希表,采用求余法作为哈希函数,模数为11,哈希冲突用链地址法和表尾插入
如果首次查找失败,就把数据插入到相应的位置中
实现哈希查找与增补功能
输入
第一行输入n,表示有n个数据
第二行输入n个数据,都是自然数且互不相同,数据之间用空格隔开
第三行输入t,表示要查找t个数据
从第四行起,每行输入一个要查找的数据,都是正整数
输出
每行输出对应数据的查找结果,每个结果表示为数据所在位置[0,11)和查找次数,中间用空格分开
样例输入
6
11 23 39 48 75 62
6
39
52
52
63
63
52
样例输出
6 1
error
8 1
error
8 2
8 1
提示
#include<iostream>
using namespace std;
const int is = 11;
int a[is][99];
void insert(int data){
    int k = data%is;
    a[k][0] += 1;
    a[k][ a[k][0] ] = data;
}
void search(int data){
    int k = data%is;
    int flag = 0; 
    for(int j=1, len = a[k][0]; j<=len; j++ ){
        if(a[k][j]==data){
            cout<<k<<" "<<j<<endl;
            flag = 1;
            break;
        }
    }
    if(flag==0){
        cout<<"error"<<endl;
        insert(data);
    }
}
int main(){
    int t;
    while(cin >> t){
        for(int i=0; i<is; i++){
            a[i][0] = 0;        // 0位记录当前表项的数据元素
            for(int j=1; j<99; j++){
                a[i][j] = -1;
            }
        }
        while(t--){
            int temp;
            cin>>temp;
            insert(temp);
        }
        int steps;
        cin >> steps;
        while(steps--){
            /****************
             * 要搜索的值情况分三种:
             * 1. 要搜索的值的记录表没有记录
             * 2. 要搜索的值的记录表有记录,但没有要找的值
             * 3. 要搜索的值的记录表有记录,但有要找的值
             ****************/ 
            int find;
            cin >> find;
            int k = find%is;
            if( a[k][0] == 0){
                cout<<"error"<<endl;
                insert(find);
            }
            else{
                search(find);
            }
        }
    }
    return 0;
}

第十五周 DS排序

A. DS排序–直接插入排序

题目描述
给出一个数据序列,使用直接插入排序算法进行降序排序。
输入
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
样例输入
2
5
111 22 6 444 333
6
21 25 49 25 16 8
样例输出
111 22 6 444 333
111 22 6 444 333
444 111 22 6 333
444 333 111 22 6
25 21 49 25 16 8
49 25 21 25 16 8
49 25 25 21 16 8
49 25 25 21 16 8
49 25 25 21 16 8
提示
#include<iostream>
using namespace std;
void show(int a[], int len){
    for(int i=0; i<len; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
};
void z_sort(int a[], int len){
    for(int i=1; i<len; i++){
        for(int j=i; (j>0) && ( a[j]>a[j-1]) ; j-- ){
            a[j] ^= a[j-1];
            a[j-1] ^= a[j];
            a[j] ^= a[j-1];
        }
        show(a, len);
    }
}
int main(){
    int step;
    cin >> step;
    while(step--){
        int t;
        cin >> t;
        int *a = new int[t+5];
        for(int i=0; i<t; i++) cin>>a[i];
        z_sort(a, t);
        cout<<endl;
    } 
    return 0;
}

B.DS排序–折半插入排序

题目描述
给出一个数据序列,使用折半插入排序算法进行降序排序。
输入
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
样例输入
2
5
111 22 6 444 333
8
30 13 70 85 39 42 6 20
样例输出
111 22 6 444 333
111 22 6 444 333
444 111 22 6 333
444 333 111 22 6
30 13 70 85 39 42 6 20
70 30 13 85 39 42 6 20
85 70 30 13 39 42 6 20
85 70 39 30 13 42 6 20
85 70 42 39 30 13 6 20
85 70 42 39 30 13 6 20
85 70 42 39 30 20 13 6
提示
#include<iostream>
using namespace std;
void show(int a[], int len){
    for(int i=0; i<len; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
};
void z_sort(int a[], int len){
    int low = 0,high = 0,mid;
    int temp = 0;
    for (int i=1; i<len; i++) {
        low=0;
        high=i-1;
        temp=a[i];
        while (low<=high) {
            mid=(low+high)/2;
            if (a[mid]<temp) {
                high=mid-1;
            }else{
                low=mid+1;
            }
        }
        for (int j=i; j>low; j--) {
            a[j]=a[j-1];
        }
        a[low]=temp;//插入元素
        show(a, len);
    }
}
int main(){
    int step;
    cin >> step;
    while(step--){
        int t;
        cin >> t;
        int *a = new int[t+5];
        for(int i=0; i<t; i++) cin>>a[i];
        z_sort(a, t);
        cout<<endl;
    }
    return 0;
}

c. DS排序–希尔排序

题目描述
给出一个数据序列,使用希尔排序算法进行降序排序。
间隔gap使用序列长度循环除2直到1
输入
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据(n>1)
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
对每组测试数据,输出每趟排序结果。不同组测试数据间用空行分隔。
样例输入
2
6
111 22 6 444 333 55
8
77 555 33 1 444 77 666 2222
样例输出
444 333 55 111 22 6
444 333 111 55 22 6
444 555 666 2222 77 77 33 1
666 2222 444 555 77 77 33 1
2222 666 555 444 77 77 33 1
提示
#include<iostream>
using namespace std;
void show(int a[], int len){
    for(int i=0; i<len; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
};
void Shell(int a[], int len){
    for( int gap = len/2; gap >= 1; gap/=2 ){
        for(int i = 0; i<gap; i++){
           for (int j = i + gap; j < len; j += gap)
                if (a[j] > a[j - gap])
                {
                    int temp = a[j];
                    int k = j - gap;
                    while (k >= 0 && a[k] < temp)
                    {
                        a[k + gap] = a[k];
                        k -= gap;
                    }
                    a[k + gap] = temp;
                }
          }
            show(a,len);
        }
    }
int main()
{
     int step;
    cin >> step;
    while(step--){
        int t;
        cin >> t;
        int *a = new int[t+5];
        for(int i=0; i<t; i++) cin>>a[i];
        Shell(a, t);
        cout<<endl;
        delete []a;
    } 
    return 0;
}

D. DS排序–冒泡排序

题目描述
给定一个包含从0到n-1各一次的数组,若使用冒泡排序将其排为升序,问其中需要进行多少次交换
输入
测试数据有多组,
每组由两行组成:第一行包含正整数n(n <= 5000); 下一行包含从0到n-1的n个整数的序列。
输出
对于每组测试数据,
输出交换次数
样例输入
10
1 3 6 9 0 8 5 7 4 2
样例输出
22
提示
需要考虑有多轮数据输入的情况!也就是第一个cin或者scanf需要用while来进行循环,例如 while(cin>>...)
#include<iostream>
using namespace std;
void show(int a[], int len){
    for(int i=0; i<len; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
}
int main(){
    int t;
    while( cin>>t){
        int a[t+5];
        int ans = 0;
        for(int i=0; i<t; i++) cin>>a[i];
        for(int i=0; i<t-1; i++){
            for(int j=i+1; j<t; j++){
                if(a[i]>a[j]){
                    int temp = a[i];
                    a[i] = a[j];
                    a[j] = temp;
                    ans++;
                }
                // show(a,t);
            }
        }
        cout<<ans<<endl;
    }
    return 0;
}

E. DS排序–快速排序

题目描述
给出一个数据序列,使用快速排序算法进行从小到大的排序
排序方式:以区间第一个数字为枢轴记录
输出方式:每一步区间排序,都输出整个数组
--程序要求--
若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio
程序中若include多过一个头文件,不看代码,作0分处理
不允许使用第三方对象或函数实现本题的要求
输入
第一行输入t,表示有t个测试示例
第二行输入n,表示第一个示例有n个数据
第三行输入n个数据,都是正整数,数据之间用空格隔开
以此类推
输出
每组测试数据,输出每趟快排的结果,即每次排好一个数字结果(长度为1的子序列,不用排,不用输出)。不同测试数据间用空行分隔。
样例输入
2
6
111 22 6 444 333 55
8
77 555 33 1 444 77 666 2222
样例输出
55 22 6 111 333 444
6 22 55 111 333 444
6 22 55 111 333 444
6 22 55 111 333 444
1 33 77 555 444 77 666 2222
1 33 77 555 444 77 666 2222
1 33 77 77 444 555 666 2222
1 33 77 77 444 555 666 2222
1 33 77 77 444 555 666 2222
提示
#include<iostream>
using namespace std;
int length;
void show(int *a){
    for(int i=0; i<length; i++){
        cout<<a[i]<<" ";
    }
    cout<<endl;
};
void q_sort(int a[], int left, int right){
// left, right 左闭右开, low、high闭区间
    if(left >= right-1 ) return;
    int low = left, high = right-1, center = a[low];    
    while( low < high ){
        while( low<high && a[high] >= center ) high --;
        a[low] = a[high];
        while( low< high && a[low] <= center) low++;
        a[high] = a[low];
    }
    a[low] = center;
    show(a);
    q_sort(a, left, low);
    q_sort(a, low+1, right );
}
int main(){
    int step;
    cin>>step;
    while(step--){
        int t;
        cin >> t;
        int *a = new int[t+5];
        length = t;
        for(int i=0; i<t; i++) cin>>a[i];
        q_sort( a, 0, t);
        cout<<endl;
    }
    return 0;
}
相关文章
|
3月前
|
存储 算法 编译器
数据结构实验之矩阵的运算器(二维数组)
本实验旨在通过团队合作,掌握数组和矩阵相关运算的代码实现,包括矩阵的加减、数乘、转置、乘法、n次方及行列式的计算。实验过程中,成员们需分工协作,解决编程难题,最终实现一个功能完备的矩阵计算器。通过本实验,不仅锻炼了编程能力,还加深了对数学概念的理解,同时培养了团队合作精神。
87 4
|
3月前
数据结构实验之串模式匹配问题
本实验旨在掌握串模式匹配技术,通过创建文本文件、实现单词计数与定位功能,最终构建一个包含文件建立、单词统计与定位、程序退出等选项的主菜单,以增强对字符串处理的理解与应用能力。
80 4
|
3月前
|
算法
数据结构实验之最长公共子序列
本实验旨在通过编程实践帮助学生理解串的基本概念及求解最长公共子序列的算法。实验内容包括使用动态规划方法设计并实现算法,以找出给定两序列的最大公共子序列。示例代码展示了如何通过构建状态矩阵和回溯路径来找到解决方案。实验总结指出,`memset()`函数用于内存初始化,且对于特定输入,程序能正确输出最长公共子序列之一。
75 4
|
3月前
|
算法
数据结构实验之操作系统打印机管理器问题
本实验旨在通过实现操作系统中的打印机管理器问题,掌握队列的基本操作如入队、出队等,利用队列的先进先出特性解决先申请先打印的问题。实验包括队列的初始化、入队、出队、打印队列内容等功能,并通过菜单式界面进行交互。实验结果显示基本功能可正常执行,但在连续操作时存在执行失败的情况,需进一步优化。
63 4
|
3月前
|
存储 算法 Perl
数据结构实验之链表
本实验旨在掌握线性表中元素的前驱、后续概念及链表的建立、插入、删除等算法,并分析时间复杂度,理解链表特点。实验内容包括循环链表应用(约瑟夫回环问题)、删除单链表中重复节点及双向循环链表的设计与实现。通过编程实践,加深对链表数据结构的理解和应用能力。
80 4
|
3月前
|
机器学习/深度学习 存储 算法
数据结构实验之二叉树实验基础
本实验旨在掌握二叉树的基本特性和遍历算法,包括先序、中序、后序的递归与非递归遍历方法。通过编程实践,加深对二叉树结构的理解,学习如何计算二叉树的深度、叶子节点数等属性。实验内容涉及创建二叉树、实现各种遍历算法及求解特定节点数量。
128 4
|
3月前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
81 4
|
8月前
|
存储 算法 数据安全/隐私保护
【Python学习篇】Python实验小练习——高级数据结构(五)
【Python学习篇】Python实验小练习——高级数据结构(五)
91 1
|
4月前
|
算法 搜索推荐 Java
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
这篇文章介绍了如何使用Java后端技术,结合Graphics2D和Echarts等工具,生成包含个性化信息和图表的海报,并提供了详细的代码实现和GitHub项目链接。
224 0
java 后端 使用 Graphics2D 制作海报,画echarts图,带工具类,各种细节:如头像切割成圆形,文字换行算法(完美实验success),解决画上文字、图片后不清晰问题
|
8月前
|
存储 算法 数据挖掘
数据结构实验||约瑟夫环
数据结构实验||约瑟夫环

热门文章

最新文章

  • 1
    局域网屏幕监控系统中的Python数据结构与算法实现
    132
  • 2
    2024重生之回溯数据结构与算法系列学习之串(12)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丟脸好嘛?】
    47
  • 3
    2024重生之回溯数据结构与算法系列学习之栈和队列精题汇总(10)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    45
  • 4
    2024重生之回溯数据结构与算法系列学习之单双链表精题详解(9)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    50
  • 5
    2024重生之回溯数据结构与算法系列学习(8)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    52
  • 6
    2024重生之回溯数据结构与算法系列学习之王道第2.3章节之线性表精题汇总二(5)【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    39
  • 7
    2024重生之回溯数据结构与算法系列学习之单双链表【无论是王道考研人还是IKUN都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    71
  • 8
    2024重生之回溯数据结构与算法系列学习之顺序表习题精讲【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    37
  • 9
    2024重生之回溯数据结构与算法系列学习之顺序表【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    45
  • 10
    2024重生之回溯数据结构与算法系列学习【无论是王道考研人还真爱粉都能包会的;不然别给我家鸽鸽丢脸好嘛?】
    43