小编The*_* K.的帖子

在AVL树的二进制搜索树

据我所知,AVL树和二进制搜索树之间的时间复杂度在平均情况下是相同的,在最坏的情况下AVL击败BST.这给了我一个提示,即AVL总是优于BST以各种可能的方式与它们进行交互,在平衡实现方面可能会增加一些复杂性.

是否有任何理由首先应该使用BST而不是AVL?

tree performance avl-tree binary-search-tree data-structures

6
推荐指数
1
解决办法
2万
查看次数

编辑指针指向函数的位置

我有一个指向C++中的结构对象的指针.

 node *d=head;
Run Code Online (Sandbox Code Playgroud)

我想通过引用将该指针传递给函数并编辑它所指向的位置.我可以传递它,但它不会改变初始指针指向的地方,但只改变函数中的本地指针.函数的参数必须是指针对吗?之后如何更改它以显示同一结构的不同对象?

c++ struct pointers reference

5
推荐指数
1
解决办法
4707
查看次数

在java中的变量名末尾附加一个数字

假设我的代码中定义了很多变量,并带有这样的名称

public javax.swing.JPanel BenderPanel1;
public javax.swing.JPanel BenderPanel2;
public javax.swing.JPanel BenderPanel3;
etc...
Run Code Online (Sandbox Code Playgroud)

所以他们的一般类型是这样的:BenderPanel"NUMBER".

我想访问其中一些并设置其可见性,.setVisible(false);但我想访问的那些面板的数量是在运行时用户定义的.

是否有任何可能的方法通过库将数字附加到每个变量的末尾,以便在for循环中访问它,如下所示:

for (int i=1; i<=UserInput; i++)
{
     BenderPanel"i".setVisible(false); // Watch this "i" right there.
}
Run Code Online (Sandbox Code Playgroud)

需要将它们添加在ArrayList第一和具有明显的方式做到这一点?

java variables append variable-names

5
推荐指数
1
解决办法
4336
查看次数

打开文件以在C++中显示内容

关于使用C++打开文件(任何类型的文件),我有两个问题要问.我目前正在开发GUI程序,我想以txt格式添加更改日志.另外,我希望程序中的菜单能够使用每个用户安装的默认文本编辑器打开changelog.txt,或者只是将其打开以打开该文本文件.请记住,我要打开显示的文件不是在程序中输入/ output.I知道我能做到这一点使用

system("notepad.exe filepath.txt");
Run Code Online (Sandbox Code Playgroud)

或者使用预设程序打开它们:

system("filepath.txt");
Run Code Online (Sandbox Code Playgroud)

问题是两者都在记事本后面打开命令行.我知道有另一个命令使用名为CreateProccess()的Win32 API打开文件,但我的编译器无法识别该命令(OpenWatcom W32).所以这是我的问题:

1)是否有其他命令打开文件或是否有办法在使用系统命令时停止打开命令行?

2)如何在Windows中定义文本文件在当前程序文件夹中?我的意思是没有给出整个文件路径,它将从用户更改为用户有没有办法"告诉"程序文件总是在程序所在的当前文件夹中?

对于任何错误我很抱歉,如果您需要任何澄清,请告诉我.

c++ windows file-io user-interface winapi

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

在不使用 DFS 的情况下确定图是否具有循环

我在考试中遇到了以下问题之一:

使用卡恩算法的拓扑排序 要求图是 DAG(有向无环图)。在不首先使用 DFS/BFS 的情况下,我们如何确定一个图是否不包含环?

我试图回答这个问题太久了,我很困惑。任何人都可以向我指出一种算法,该算法可以确定图形没有使用 DFS 的循环,或者我应该向我的讲师大发雷霆吗?

algorithm graph cycle depth-first-search

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

为什么有人喜欢向量而不是数组?

可能重复:
现实世界中的C++ STL向量与数组

首先,我对C++和C的高级知识有一点低于平均水平的知识.
很多时候,我想问一些与代码相关的内容并包含或引用一些代码,并且array每个人都会立即锁定这个方面,并建议我应该使用a vector,即使它不需要做任何与我的问题有关的事情.

问题是,这是我学会了如何使用C++,显然这是我从第一次学习纯C继承的方式,我很习惯了,虽然我有信心用载体还,我只是喜欢arraysvectors.

我的问题是为什么有人会使用一个vector而不是一个array,即使他已经习惯了数组,他还能通过这样做获得什么?
如果arrays不是首选,vectors为什么不是每个人都只使用矢量的一切?

c++ arrays vector

2
推荐指数
1
解决办法
4242
查看次数

包含C++中两个不同类的对象的列表

我觉得Java比C++更流利,所以我会尝试用几句话来解释我想要"传输"的东西.在Java您可以创建一个ArrayList从另一个继承其中的一个2或多个类的包含对象.让我来说明一下.假设我们有:

class Vehicle
{
...
}

class Car extends Vehicle
{
...
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以做类似的东西,Car a = new Vehicle ([arguments]); 然后你可以添加两个对象Vehicle,并Car以相同ArrayList的创建如下:

ArrayList ar = new ArrayList<Car>();
Run Code Online (Sandbox Code Playgroud)

现在我的问题是,在C++中我手动编写代码来创建一个简单的链表.该列表的每个节点如下所述:

struct clientListNode
{
    vip* cust;
    struct clientListNode* next;
};
Run Code Online (Sandbox Code Playgroud)

vip是另一个派生自的类customer.有没有办法让我的列表接受vip类和customer类的对象?

c++ list object

2
推荐指数
1
解决办法
1015
查看次数

Grep返回aces序列而不是我期望的结果

我有一个名为threads.log的文件,这是该文件的示例

Threads:    40
Threads:    1
Threads:    1
Threads:    3
Threads:    5
Threads:    5
Threads:    1
Threads:    5
// rest
Run Code Online (Sandbox Code Playgroud)

我在终端这样做: echo $(cat threads.log | grep -o [0-9]*)

这是输出:1 1 1 1 1 1 1而不是预期的数字.为什么会这样?

linux bash shell ubuntu grep

2
推荐指数
1
解决办法
57
查看次数

反正有没有将filein重置为初始状态?

我试图用C++中的文本文件输入数据.文本文件采用以下格式:

4 15
3 516
25 52 etc.
Run Code Online (Sandbox Code Playgroud)

每行包含两个整数.我不知道文件中的行数,所以我可以绑定足够的内存,这就是我作为解决方法的方法:

ifstream filein;
filein.open("text.txt",ios::in);
int count=0;

while (!filein.eof())
    {
        count++;
        filein>>temporary;
    }
count=count/2; // This is the number of lines in the text file.
Run Code Online (Sandbox Code Playgroud)

我的问题是我无法想出一种重置方法

FILEIN

进入初始状态(到文件的开始,所以我实际上可以输入数据),而不是关闭输入流并再次打开它.还有其他办法吗?

c++ file-io stream fileinputstream

1
推荐指数
1
解决办法
136
查看次数

Win32中的Sleep()会使程序无响应

基本上就是标题所说的.当用户按下该特定按钮时,我想每1秒更新一个按钮包含的文本.我已经注意到,当程序没有焦点时它可以正常工作并且文本正确刷新但是当我在程序上盘旋或者当我试图点击它的菜单时Windows告诉我该程序没有响应并询问我是否我希望它终止.当循环结束时,程序返回其正常状态.我可能已经完成的任何动作(如移动它或关闭它),而它是Sleep() -在循环之后执行.这是一些代码:

case ID_BUTTON_START:
// Code executed when pressing Start Button.
char startButtonText[30];  // Storing next loop text
 for (int i=5; i>0; i--)
    {
       sprintf(startButtonText, "Starting in ... %d", i);
       SendMessage(hwndButtonStart, WM_SETTEXT, 0, (LPARAM)(startButtonText));
       Sleep(1000);
     }
Run Code Online (Sandbox Code Playgroud)

这是正常的吗?如果不是造成这种情况的原因?

c++ winapi sleep

1
推荐指数
1
解决办法
1417
查看次数

尝试使用fgets()从文件读取时出现奇怪的问题

我试图从C中的文件中读取fgets()但是我遇到了以下问题:

虽然我可以使用fopen()以下命令成功打开文件:

if ( file=fopen(filename, "r") == NULL )
{
    printf("Couldn't open specified file. Please try again.");
    exit(1);
}
Run Code Online (Sandbox Code Playgroud)

我无法从中读到任何东西.我正在使用以下循环,虽然没有打印任何内容并且执行成功终止.

while ( (fgets(inputLine, 1023, file)) != NULL)
{
    printf("Hello world");
}
Run Code Online (Sandbox Code Playgroud)

这与实际文件名,文件大小或文件内容无关.似乎没有任何工作,并且调试器中没有任何内容显示为错误.我试过的示例文件是直接复制和粘贴的以下内容:

test.txt
#include <stdio.h>
int main ()
{
       printf("Hello World");
}
Run Code Online (Sandbox Code Playgroud)

你有没有猜到为什么会这样?

注意:我已经从这个 S'O问题中获取了循环代码,所以我猜它是正确的.

c buffer input fgets

0
推荐指数
1
解决办法
501
查看次数