首页 > 其他分享 >数组随笔

数组随笔

时间:2022-10-17 19:58:57浏览次数:59  
标签:node right temp int down rhead 数组 随笔

稀疏数组储存的下标实际上是该元素之前的元素个数,这样才可以实现从0开始存储。

 

这是因为不能直接用下标读取元素了。

 对于十字链表的储存:

#include<bits/stdc++.h>
using namespace std;
void add();
void creat(crosslist& a);
void init();
void print();
struct node {
    int i, j;
    int value;
    node* right, *down;
};
struct crosslist {
    int row, col;
    int tu;
    node* rhead, * dhead;
};
int m, n;
crosslist a;
void creat(crosslist& a) {
    for (int i = 0; i < a.tu; i++) {
        node* temp;
        cin >> temp->i >> temp->j >> temp->value;
        temp->right = temp->down = NULL;
        if (a.rhead[temp->i].right == NULL) {
            a.rhead[temp->i].right = temp;
        }
        else {
            node* p = a.rhead[i].right;
            while (p->right && p->right->j < temp->j) {
                p = p->right;
            }
            temp->right = p->right;
            p->right = temp;
        }//行插入成功!
        if (a.dhead[temp->j].down = NULL) {
            a.dhead[temp->j].down = temp;
        }
        else {
            node* p = a.dhead[temp->j].down;
            while (p->down && p->down->i < temp->i) {
                p = p->down;
            }
            temp->down = p->down;
            p->down = temp;
        }//列插入成功!
    }
}
void init() {
    a.rhead = a.dhead = NULL;
    cin >> a.row >> a.col >> a.tu;
    a.rhead = new node[n];
    a.dhead = new node[m];
    //初始化行和列的头
    for (int i = 0; i < n; i++) {
        a.rhead[i].down = NULL;
    }
    for (int i = 0; i < m; i++) {
        a.dhead[i].right = NULL;
    }
    creat(a);
}

 

标签:node,right,temp,int,down,rhead,数组,随笔
From: https://www.cnblogs.com/-ark/p/16788336.html

相关文章

  • 代码随想录第六天 | 242.有效的字母异位词, 349. 两个数组的交集, 202. 快乐数, 1. 两数
    休息日结束后的第一天242.有效的字母异位词classSolution{publicbooleanisAnagram(Strings,Stringt){HashMap<Character,Integer>map=newHa......
  • 子序列与子数组(子串)
    子序列与子数组(子串)区别子序列元素在原数组的下标不连续,相对位置不可改变例如[1,2,3,4,5]->[1,3,5]子数组(子串)元素在原数组的下标连续,相对位置不可变例......
  • 三 数组
    三数组​​三数组​​​​1数组的概述​​​​2一维数组的使用​​​​3多维数组的使用​​​​4数组算法​​​​5Arrays工具类的使用​​总结于​​尚硅谷视频​​......
  • 数组的扩展
    扩展运算符console.log(...[1,2,3])//123//你甚至可以在后面放置表达式constarr=[...(x>0?['a']:[]),'b',];//替代apply方法//ES5用法varargs=......
  • 数组输出26字母
    #include<string.h> #include<limits.h>#include<float.h>#include<stdio.h>#pragmawarning(disable :4996)usingnamespacestd;#defineLEN26intmain(){  ......
  • 数据结构—数组和链表
    数组数组:Array,是有序的元素序列,数组是在内存中开辟一段连续的空间并在此空间存储元素就像是一排出租屋,从001到100每个房间都有固定编号通过编号就可以快速找到租房......
  • 消除游戏的格子的index和二维数组row-column的换算
       index = row x MaxColumn + col            // 一个5x4的矩阵的index            // 0,1,2,3,            //......
  • C语言:删除已经排序的整型数组中的重复值
    #include<stdio.h>//每找到一个重复的元素,则最末尾前移一位,去重范围缩小一位//找到重复元素后,此时数组下标之后的元素向前移一位main(){inta[]={1,1,1,1,2,2,......
  • linux命令随笔
    用于记录平时遇到的比较有用的命令。Vim命令查找​ vim进入编辑模式之后,如果想在文件中查找某个关键字的话可以用/关键字,随后回车,文件中的关键字会高亮显示,摁n可以调......
  • Java如何将两个数组合并为一个数组呢?
    转自:​​http://www.java265.com/JavaJingYan/202204/16502899232926.html​​数组:   数组(Array)是有序的元素序列。若将有限个类型相同的变量的集合命名,那么这个名称......