首先,感谢土豆土豆皮关于icoding的多篇优秀文章。其次,该文章如有错误,欢迎批评指正共同进步。(欢迎大家cv学习噢,毕竟icoding实在让人恼火~~~)

土豆土豆皮的原版十字链表在2021级icoding中多次提交始终是98%的通过率,主要原因在于:

1.一维数组下标转化为二维数组行标与列表有问题(如下图):

2. del_cross_list函数中,两个for中作为判断条件的值都小了1,导致不能完全遍历十字链表(如下图):

微调之后通过率就变成100%,如下是微调代码:

#include "crosslist.h"
#include <stdio.h>
#include <stdlib.h>int init_cross_list(PCrossList L, const ElemType* A, int m, int n)
{int i;OLink q, p;L->rows = m;L->cols = n;L->nums = 0;if (!(L->rowhead = (OLink*)malloc((m + 1) * sizeof(OLink))))return 0;if (!(L->colhead = (OLink*)malloc((n + 1) * sizeof(OLink))))return 0;for (i = 0; i <= m; i++)L->rowhead[i] = NULL;for (i = 0; i <= n; i++)L->colhead[i] = NULL;for (i = 0; i < m * n; i++) {if (A[i] == 0);else {if (!(p = (OLNode*)malloc(sizeof(OLNode))))return 0;p->col = i%n+1;p->row = (i+1-p->col)/n+1;p->value = A[i];p->right = NULL;L->nums++;p->down = NULL;if (L->rowhead[p->row] == NULL)L->rowhead[p->row] = p;else {q = L->rowhead[p->row];while (q->right != NULL)q = q->right;q->right = p;}if (L->colhead[p->col] == NULL)L->colhead[p->col] = p;else {q = L->colhead[p->col];while (q->down != NULL)q = q->down;q->down = p;}}}return L->nums;
}
int del_cross_list(PCrossList L, ElemType k)
{int count = 0;for (int i = 0; i < L->rows+1; ++i) {OLink p = L->rowhead[i];while (p) {if (p->value == k) {OLink q;for (q = L->rowhead[i]; q != p && q->right != p; q = q->right) {}if (q == p) {L->rowhead[i] = p->right;p = L->rowhead[i];count++;continue;} else {q->right = p->right;p = p->right;count++;continue;}}p = p->right;}}for (int i = 0; i < L->cols+1; ++i) {OLink p = L->colhead[i];while (p != NULL) {if (p->value == k) {OLink q;for (q = L->colhead[i]; q != p && q->down != p; q = q->down) {}if (q == p) {L->colhead[i] = p->down;p = L->colhead[i];free(q);continue;} else {OLink tmp = q->down;q->down = p->down;p = p->down;free(tmp);continue;}}p = p->down;}}return count;
}

十字链表(icoding)(土豆土豆皮版本微微调)相关推荐

  1. icoding复习4 数组 十字链表

    icoding 复习4 1. 矩阵加法 实现三元组表示的两个稀疏矩阵的加法. #define MAXSIZE 100          //假设非零元个数的最大值为100 typedef struct ...

  2. noj数据结构稀疏矩阵的加法十字链表_数据结构学习(C )稀疏矩阵(十字链表1)

    CSDN 先说说什么叫稀疏矩阵. 你说, 这个问题很简单吗, 那你一定不知道中国学术界的嘴皮子仗, 对一个字眼的"抠"将会导致两种相反的结论.这是清华 2000 年的一道考研题:& ...

  3. 游戏算法-AOI十字链表入门简单版python

    AOI十字链表python简单实现,仅用作学习,理解基本原理 AOI一般是C++去实现,本文章python写仅用来入门了解 场景内维护两个实体链表 list_x和list_y 所有实体根据x坐标大小排 ...

  4. 日撸 Java 三百行(37 天: 十字链表)

    注意:这里是JAVA自学与了解的同步笔记与记录,如有问题欢迎指正说明 目录 前言: 一.关于十字链表 1.特殊情况下邻接表的局限 2.十字链表的结构与特点 二.十字链表的代码实现 1.基本属性 2.出 ...

  5. 稀疏矩阵十字链表表示

    类型定义 #include<stdio.h> #include<malloc.h> #include<stdlib.h> #define MAX 100 /*稀疏矩 ...

  6. 【swjtu】数据结构实验5_基于十字链表的稀疏矩阵转置

    实验内容及要求: 编写程序,从字符文件读入三个正整数m, n, t以及t个三元组(i, j, e)建立稀疏矩阵的十字链表存储结构.其中,m.n分别表示矩阵行数和列数:i,  j为非零元素行号和列号.编 ...

  7. 图十字链表并求度c语言,利用十字链表存储树结构(便于同时求出某一点的入度与出度)------C语言实现...

    #include #include #include /* 利用十字链表存储有向图,可用于同时查找某个顶点的出度与入度: */ typedef struct edge{//顶点表 int headve ...

  8. 稀疏矩阵的三元组表与十字链表存储

    三元组表:存储稀疏矩阵的非零元素,以及该元素所在的行.列信息,极大的节省了空间(如相比于一般的二维数组的存储),而且三元组表的某些算法的时间效率也要优于经典算法,如基于三元组表的一次快速转置算法等等 ...

  9. C++ 十字链表图转java版

    C++ 图 #include <iostream> #include <string> #include <queue> #include <stack> ...

最新文章

  1. otto android,Android Otto调研
  2. Nature:首个完全复现人眼的仿生眼问世,港科大造出半球形人工视网膜,感光性能超过人眼460倍...
  3. 终端读写命令 -- read write wall
  4. [原创] debian 9.3 搭建Jira+Confluence+Bitbucket项目管理工具(四) -- 安装bitbucket 5.7.0
  5. Linux共享文件夹中毒,linux服务器中毒利用Find查找病毒例子
  6. 《自顶向下网络设计(第3版)》——导读
  7. Tensorflow(r1.4)API--tf.summary.scalar
  8. MVC中添加动作过滤器的方法
  9. Oracle Shared Pool优化思路
  10. 反病毒工具-LordPE
  11. Ansys SCDM基本操作
  12. gin框架使用JWT鉴定权限
  13. mybatis配置文件 .dtd头部约束 出错报红 【亲测实用,可供参考】
  14. 【汇正财经】11.7日盘面回顾和行情解析
  15. 知物由学 | “群控软件”助长黑灰产套利的零和游戏,硬核技术打击隐秘的不公
  16. Agv、Rgv 车辆控制调度系统开发知识点篇
  17. vmware之设置共享文件夹
  18. 计算机博士银行待遇怎么样,博士生入职某银行,晒出行业收入和待遇,网友:我不信...
  19. 联想创投投资的首个协作机器人:扬天科技完成5000万Pre-A融资
  20. Navicat连接Linux-MySQL

热门文章

  1. python打印日历_python输出指定月份日历的方法
  2. 书札《数学之美》(在读)
  3. TypeScript笔记(基础大全到井格游戏案例)
  4. VirtualBox 导入centos8 voa镜像无GNOME GUI界面问题解决
  5. 安装配置Maven构建工具
  6. Anaconda 3 配置环境变量(搞了两天终于配置成功)
  7. 干货 | 日访问过亿,办公IM及开放式平台在携程的实践
  8. 爬取彼岸图网4k图片
  9. jenkins+git+maven+docker持续集成部署
  10. opencv+python 图片文字识别