我正在研究数据结构:单链表。
该网站称单向链表的插入和删除时间复杂度为O(1). 我错过了什么吗?
我用 C++ 做这个,我只有一个root pointer. 如果我想在最后插入,那么我必须一直走到后面,这意味着O(n).
以下是使用C++实现哈希表.你能帮我理解一下HashEntry **table是什么吗?为什么它被声明为双指针?它是一个数组,数组的每个值是HashEntry?
class HashEntry {
private:
int key;
int value;
public:
HashEntry(int key, int value) {
this->key = key;
this->value = value;
}
int getKey() {
return key;
}
int getValue() {
return value;
}
};
const int TABLE_SIZE = 128;
class HashMap {
private:
HashEntry **table;
public:
HashMap() {
table = new HashEntry*[TABLE_SIZE];
for (int i = 0; i < TABLE_SIZE; i++)
table[i] = NULL;
}
int get(int key) {
int hash = (key % …Run Code Online (Sandbox Code Playgroud) 我对提供的答案有疑问
@ dan04.什么是对齐的内存分配?
特别是,如果我有这样的事情:
int main(){
int num; // 4byte
char s; // 1byte
int *ptr;
}
Run Code Online (Sandbox Code Playgroud)
如果我有一台32位机器,你认为默认情况下它仍会填充数据吗?
在上一个问题中,它被问及struct,我在询问有关变量main.
更新:
a = 2 bytes
b = 4 bytes
c = 1 byte
d = 1 byte
0 1 2 3 4 5 6 7
|a|a|b|b|b|b|c|d| bytes
| | | words
Run Code Online (Sandbox Code Playgroud)