icoding测试代码---十字链表

icoding的数据结构并没有一个测试代码,其都是直接编写一个函数的形式,因此很难知道自己的实际输出是什么。针对部分题目,我编写了一系列测试代码以供大家进行数据输出的测试。

部分代码来自白zj老师


修改提示
请先将你的代码复制到两个函数中然后修改main函数完成测试样例的输入
**********************
main函数的各项参数含义请参考main函数的注释

 

#include <stdio.h>
#include <stdlib.h>
//#include "crosslist.h"

typedef int ElemType;
typedef struct OLNode
{
    int row, col;
    ElemType value;
    struct OLNode* right, * down;
}OLNode, * OLink;
 
typedef struct
{
    OLink* rowhead, * colhead;
    int rows, cols, nums;
}CrossList, * PCrossList;

/*
修改提示
请先将你的代码复制到两个函数中然后修改main函数完成测试样例的输入
**********************
main函数的各项参数含义请参考main函数的注释
*/



int init_cross_list(PCrossList L, const ElemType *A, int m,int n){

//TODO

}


int del_cross_list(PCrossList L, ElemType k){

//TODO

}

//十字链表打印函数
void PrintCrossList(CrossList *M) {
    OLNode *p;
    int i, j;
    
    for (i = 1; i <= M->cols; ++i) printf("\t[C%d]", i);
    putchar('\n');

    for (i = 0; i < M->rows; ++i) {
        printf("[R%d]", i+1);
        p = M->rowhead[i];
        for (j = 0; j < M->cols; ++j)
            if (p != NULL && p->col-1 == j) {
                printf("\t%d", p->value);
                p = p->right;
            }
            else
                printf("\t");
            
        putchar('\n');
    }
}

int main()
{
    CrossList L;
    int m = 3, n = 3;//可修改,m:十字链表列数,n:十字链表行数
    int del=1;//可修改,要删除的元素的值
    int A[9] = {0,1,2,3,1,5,1,7,1};//可修改,注意[]内的值为m*n的值,内为矩阵数据,请勿超界
    int flag=1;//可修改,若需进行删除函数的测试,请修改main函数的flag为1,不进行为0
                //不可单独进行第二个函数的测试

    int co=-1;//请勿修改,用于统计非零元素的个数
    int de_num=-1;//请勿修改,用于统计删除元素的个数

    

 

    printf("||icoding-十字链表||\n@特别注意:icoding本题的比较奇怪,请注意下标值从1还是0开始\n");
    printf("---开始测试---");
    co=init_cross_list(&L, A, m, n);
    printf("\n>>正在初始化\n");
    PrintCrossList(&L);
    
    printf("<<初始化完毕,非零元素共计%d个",co);

    if(flag==1){
    printf("\n>>正在删除元素:%d\n",del);
    de_num=del_cross_list(&L, del);
    PrintCrossList(&L);
    printf("<<删除完毕,共删除元素%d个\n",de_num);
    }
    else{
    printf("根据您的设置,未进行删除函数的测试,若需要请修改main函数的flag为1");
    printf("\n---测试完毕---\n");
    }
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

谨慎谦虚

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值