标签: data-structures

如果像这样的动态数据结构是可能的,为什么我们需要一个链表?

如果我们拥有std::set并且std::vector可以动态增长和缩小,为什么我们需要链表?

NB我真的不明白,为什么会有这么多的选票.唐氏选民,请留下评论.

c++ arrays linked-list dynamic data-structures

-3
推荐指数
4
解决办法
565
查看次数

元组,列表和字典如何存储在python的后端

元组,列表和字典如何存储在python的后端?为什么我们不能在分配后改变元组?它在后台如何工作?

python data-structures

-3
推荐指数
1
解决办法
397
查看次数

如何将数组元素乘以大O(n)

我有一个数字,它有N号.我想将数组元素乘以以下规则;

arr[n]={5,7,2,3,4....}

the first row:A[0]*A[2]*A[3]*A[4]....*A[n]
the second row:A[0]*A[1]*A[3]*A[4]....*A[n]
the third row:A[0]*A[1]*A[2]*A[4]...*A[n]
...........
the n row:A[0]*A[1]*A[2]*A[3]*A[4]....*A[n-1]
Run Code Online (Sandbox Code Playgroud)

我用O(n ^ 2)做到了但是我无法解决它O(n)如果没有除法行元素我怎么能这样做?

c++ arrays data-structures

-3
推荐指数
1
解决办法
86
查看次数

在C++中已经为LinkedList,HashMap,Tree等编写了类?

在C++中存在一个公共结构数据库,例如在Java中有它java.util.Collection的所有子类.C++中也有类似的东西吗?我不会为我使用的每个数据结构编写代码.

c++ linked-list data-structures

-3
推荐指数
1
解决办法
138
查看次数

信息学奥林匹克问题和颜色间隔?

这是2013年本地INOI信息学奥林匹克问题.

假设我们1393在实轴上有点.我们想要对这个点着色,使得对于每个任意区间[a,b],如果至少有一个1393点的点在区间中,则区间内的至少一个点与该区间中的其他点具有不同的颜色.有多少颜色可以做到这一点?(最佳答案是11).

INOI承诺用11简短回答.我们如何计算这个问题?

c++ algorithm math discrete-mathematics data-structures

-3
推荐指数
1
解决办法
176
查看次数

指针的价值没有变化

class node{
    public:    node* next;
               int data;
};
void insert_node(node* head, int val){
    node* n = new node();
    n->next = NULL;
    n->data = val;
    cout << n->data << endl;
    if (head == NULL){   //point .1.
        head = n;        //point .2.
        cout<<"checkpoint 1 reached"<<endl;
    }
    else{
        node* p = head;
        while (p->next !=NULL)
            p= p->next ;
        p->next = n;
        head->next = n;
    }
    return ;
}
int main(){
    node* head = NULL;
    insert_node(head, 3);
    insert_node(head, 4);
    insert_node(head, 5);
    insert_node(head, 6);
    insert_node(head, …
Run Code Online (Sandbox Code Playgroud)

c++ pointers linked-list data-structures

-3
推荐指数
1
解决办法
720
查看次数

Python3:如何在数据结构中的列表字符串中打印项目

假设我有一个列表,其中包含另外两个包含一个字符串的列表,

foo = [['12345'],['abcdefg']]
Run Code Online (Sandbox Code Playgroud)

如何使用索引位置值打印出"b"?我知道我可以写清单中的每个项目,比如

['a','b','c','d']
Run Code Online (Sandbox Code Playgroud)

但我想知道是否可以只使用一个字符串.

python string variables list data-structures

-3
推荐指数
1
解决办法
50
查看次数

-3
推荐指数
1
解决办法
65
查看次数

关于PATRICIA的困惑

根据libstdc ++文档的第 3点和第4点,PATRICIA尝试有两种类型的节点:

A(PATRICIA)trie类似于树,但有以下区别:

  1. 它明确地将键视为一系列元素.例如,trie可以将字符串视为字符序列; 特里可以将数字视为一系列位.

  2. 它不一定是二进制的.每个节点都有扇出n + 1,其中n是不同元素的数量.

  3. 它仅在叶节点处存储值.

  4. 内部节点具有以下属性:A)每个具有至少两个子节点,并且B)每个节点与其任何后代共享相同的前缀.

我一直在阅读的书(Algorithms in C,Part 1-4 by Robert Sedgewick)似乎描述了一个PATRICIA trie,只用n个节点存储n个值,使用内部节点存储值:

与DST一样,patricia尝试允许仅使用N个节点搜索树中的N个键....我们通过另一个简单的设备避免外部节点:我们将数据存储在内部节点中,并用链接指向外部节点的链接,这些链接指向trie中正确的内部节点

这里似乎有两个信仰阵营:

  1. 一方面,我们有一个严格的,具体的定义(即Sedgewick,Knuth,Morrison,他们似乎都将PATRICIA专门描述为一个前缀压缩的二叉树,单向分支被淘汰); 和
  2. 然后我们让那些人相信这个术语形成了一个松散的,含糊不清的定义,似乎更像是他们想要使用像"map","dictionary"或"trie"这样的词(它们实际上都是松散定义的,即libcs​​td ++文档).

我想我很担心资源的准确性.据我所知,由于公共前缀引入的问题,不可能只用N个节点表示一个树而不将其表示为二叉树(这似乎违反了libcs​​td ++ docs的第2点,而在处理变量时则指向第4点) -width keys),并且不会失去严格的单向分支的概念(通过使"叶子节点"和"子节点"的概念有些无效而违反第3点和第4点).这两个特性协同工作以消除"内部节点"的困境,这种困境会导致这些树使用多于N个节点(回想一下:N个项目只有N个节点).

这两组参考文献不能都是正确的; 相互排斥太多了.如果一个参考文献说PATRICIA是二元的而另一个参考文献说它可能不是,那么它们不能被认为是事实上正确的,这只是我在这里看到的一个不一致的例子.哪些参考文献是正确的?

patricia-trie data-structures

-4
推荐指数
1
解决办法
1042
查看次数

C++设置比较慢?

我不得不使用一种数据结构,它将元素保持在某种顺序,以便我可以查询最少元素并有效地插入新元素set ( C++ stl).所以我选择了 .这需要log(n)时间,插入log(n)用于删除至少元件.

所以我写了以下程序:

#include<iostream>
#include<set>
#include<stdio.h>
using namespace std;
int main()
{
   set<int>s1,s2;
   set<int>::iterator it;
   int tmp,i;
   for(i=1;i<=1000000;i++)s1.insert(i);
   for(i=1;i<=1000000;i++)
   {
      it=s1.begin();
      s2.insert(*it);
      s1.erase(s1.begin());
   }
return 0;
}
Run Code Online (Sandbox Code Playgroud)

但这需要1.67我的机器上的秒数(我的核心3)我期望更少,O(log(1000000)*1000000)2*10^7我尝试优先级队列也给了我相同的性能.那么我应该实现自己的以使其更快或有其他方式吗?

c++ data-structures

-4
推荐指数
1
解决办法
295
查看次数