任何人都可以通过单链表帮助我吗?我知道如何使用struct,但现在我想知道如何只使用没有struct或nodes的数组和指针。算法请谢谢。
#include <iostream>
using namespace std;
const int size=5;
int data[size];
int *mem;
int add[size];
int top = -1;
void AddLast(int value)
{
if(top==-1)
{
top=data[value];
}
else
{
top++;
top=data[value];
}
}
void print()
{ cout << "Queue: ";
for(int i = 0; i != top; i = (i + 1) % size)
{
cout << data[i] << "->";
}
cout << endl;
}
int main()
{
AddLast(2);
print();
AddLast(3);
print();
AddLast(4);
print();
cin.get();
return 0;
}
我想添加,添加第一个,然后添加排序......是这样的吗?
答案 0 :(得分:3)
您不能只使用一个阵列,至少需要两个:一个用于数据,一个用于链接。如果您根本不想使用结构(虽然我真的没有看到它的原因),您可以拥有多个数据阵列。
数据数组包含实际数据,它没什么特别之处。链接数组包含数据数组的索引,其中每个索引都是&#34; next&#34;指针。
例如,假设您想要一个整数的链接列表,并且列表中有三个整数(它们的值不相关),让我们调用该数据数组d
,然后你有{{1 },d[0]
和d[1]
。列表中的第一个节点是d[2]
,后跟d[1]
和最后d[0]
。然后你需要一个head变量,它告诉哪个索引是列表的头部,这个head变量初始化为d[2]
(&#34; points&#34; to 1
)。然后我们有链接数组,让我们称之为d[1]
,因为头是&#34;指向&#34;到l
我们获取1
以获取下一个节点,l[1]
的内容为l[1]
,告诉我们下一个节点是0
。要获取下一个节点,我们会检查d[0]
,为l[0]
提供2
。下一个链接d[2]
可以l[2]
来标记列表的结尾。
当然,数据数组和链接数组的大小必须相同。
答案 1 :(得分:1)
成员fun2 <- function(DF,vdep){
model.matrix(as.formula(paste(vdep, "~ .")), data = DF)
}
fun2(df, "a")
(Intercept) b c
1 1 5 9
2 1 6 10
3 1 7 11
4 1 8 12
attr(,"assign")
[1] 0 1 2
,s
,A
的结构数组B
可以由三个数组C
,a
模拟b
,例如c
代表a[i]
,依此类推。所以这是你没有结构的要求。然后用数组做一个链表,即用索引代替指针,只是表示法;概念完全相同。但您可能会查找使用空闲列表的技术,这是一个可用逻辑节点列表;这允许您以简单的方式释放节点并分配它们。
答案 2 :(得分:1)
有一种(丑陋的)方法可以用数组做链接列表。
以下是一个如何使用数组执行操作的示例,但我绝不会建议您考虑这样做。
for ( map<string, int>::const_iterator it = symbolTable.begin(); it != symbolTable.end(); ++it)
cout << it->first << ": " << it->second << '\n';
这太多了演员。如果你创建一个由两个指针组成的数组,并且只是在指针中将第一个值转换为你关心的内容,那就不那么难看了,但这仍然不是我推荐的。