检查下列代码问题#include<bits/stdc++.h> using namespace std; char s[13][20]={'\0'}; struct ArcNode { int adjest; ArcNode *next; }; typedef struct { int vertex; int count; ArcNode firstedge; } VNode; class AdjGraph { private: int VertexNum; int ArcNum; public: VNode adjlist[100]; AdjGraph(int a[],int n,int e); ~AdjGraph(); }; AdjGraph::AdjGraph(int a[],int n,int e) { int i,j,k; VertexNum=n; ArcNum=e; for(i=1;i<=VertexNum;i++) { adjlist[i].vertex=a[i]; adjlist[i].firstedge=NULL; } int q; for(k=0;k<ArcNum;k++) { char s2[20]={'\0'}; char s3[20]={'\0'}; char s0[20]={'\0'}; cin>>s2; cin>>s3; for(q=1;q<=n;q++) { strcpy(s0,s[q]);/**/ if(strcmp(s0,s2)==0) i=q; if(strcmp(s0,s3)==0) j=q; } ArcNode s=new ArcNode; s->adjest=j; s->next=adjlist[i].firstedge; adjlist[i].firstedge=s; } } AdjGraph::~AdjGraph() { } void TopSort(AdjGraph G,int n) { int i,j,l=0; int v; int b[100]={0}; int St[100],top=-1; ArcNode p; for (i=1;i<=n;i++) G->adjlist[i].count=0; for (i=1;i<=n;i++) { p=G->adjlist[i].firstedge; while (p!=NULL) { G->adjlist[p->adjest].count++; p=p->next; } } for (i=n;i>0;i--) if (G->adjlist[i].count==0) { top++; St[top]=i; } while (top>-1) { i=St[top];top--; b[l]=i; l++; p=G->adjlist[i].firstedge; while (p!=NULL) { j=p->adjest; G->adjlist[j].count--; if (G->adjlist[j].count==0) { v=St[top]; if(v>=j) {top++; St[top]=j;} else { St[top]=j; top++; St[top]=v; } } p=p->next; //找下一个邻接点 } } if(l!=n) { cout<<"False"; } else { for(i=0;i<l;i++) { cout<<s[b[i]]; if(i!=n-1) cout<<endl; } } } int main() { int n,e,i; ArcNode p; cin>>n>>e; char s1[20]={'\0'}; for(i=1;i<=n;i++) { cin>>s1; strcpy(s[i],s1); } int a[100]={0}; for(i=1;i<=n;i++) { a[i]=i; } AdjGraph A(a,n,e); / for(i=1;i<=n;i++) { cout<<A.adjlist[i].vertex<<"--->"; p=A.adjlist[i].firstedge; while(p!=NULL) { cout<<p->adjest<<"--->"; p=p->next; } cout<<endl; } */ AdjGraph *G=&A; TopSort(G,n); return 0; }
时间: 2024-04-27 22:21:11 浏览: 11
代码中存在以下问题:
1. 头文件包含了<bits/stdc++.h>,这不是标准头文件,可能会导致兼容性问题,建议使用标准头文件。
2. 结构体ArcNode中定义了一个指向ArcNode类型的指针next,但是并没有初始化为NULL,可能会导致未知的错误。
3. 在AdjGraph的构造函数中,没有为成员变量VertexNum和ArcNum初始化,可能会导致未知错误。
4. 在AdjGraph的构造函数中,定义了一个指向ArcNode类型的指针s,但是没有使用delete操作符释放内存空间,会导致内存泄漏。
5. 在TopSort函数中,G是AdjGraph类型的指针,应该使用箭头运算符->来访问成员变量和成员函数,而不是使用点运算符。
6. 在TopSort函数中,变量b的下标从0开始,但是存储的元素从1开始,可能会导致数组越界。
7. 在TopSort函数中,当l!=n时,输出"False",但是没有退出函数,可能会继续执行下面的代码。
8. 在TopSort函数中,输出顶点的时候,应该输出顶点的编号,而不是顶点的名称。
相关问题
#include <bits/stdc++.h> using namespace std; int main() { char s[]="hello C++ world"; char *d; char c[]=" "; d=&c; char *p; p=strtok(s,d); while (p!=NULL) { cout <<p <<endl; p=strtok(NULL,d); } return 0; }
在这段代码中,你尝试将指向字符数组的指针 `&c` 赋值给字符指针 `d`,这是不允许的,因为两者类型不同。正确的做法是将 `d` 声明为字符数组类型,即 `char d[] = " "`。这样就可以将空格字符数组的地址赋值给 `d`。修改后的代码如下:
```
#include <bits/stdc++.h>
using namespace std;
int main() {
char s[] = "hello C++ world";
char d[] = " ";
char *p;
p = strtok(s, d);
while (p != NULL) {
cout << p << endl;
p = strtok(NULL, d);
}
return 0;
}
```
这段代码的功能是将字符串 `s` 按照空格进行分割,并输出分割后的结果。注意,这段代码使用了 `strtok()` 函数进行字符串分割操作。
#include<bits/stdc++.h> //cout<<"\033c"; clean _sleep(); wait #include<unistd.h> using namespace std; void draw(int n,char f) { for(int i=0;i<n;i++) cout<<f; } int main() { draw(n, f); return 0; } 哪里错了
这段代码有几个问题:
1. `n` 和 `f` 在 `draw` 函数中没有定义,需要在调用 `draw` 函数之前先定义。
2. `cout<<"\033c";` 这一行代码可能会有跨平台兼容性问题,因为不是所有操作系统都支持这种方式清屏。可以使用 `system("clear");` 或 `system("cls");` 来代替。
3. `_sleep();` 这个函数应该是 Windows 系统下的函数,如果要在 Linux 系统下实现类似的功能,可以使用 `sleep()` 函数。
下面是修正后的代码:
```
#include<bits/stdc++.h>
#include<unistd.h>
using namespace std;
void draw(int n, char f) {
for(int i=0;i<n;i++)
cout<<f;
}
int main() {
int n = 10;
char f = '*';
system("clear");
draw(n, f);
sleep(1);
return 0;
}
```
这段代码的功能是在终端中输出 10 个 `*`,并在输出后延迟 1 秒钟,然后清屏。
相关推荐
![h](https://img-home.csdnimg.cn/images/20210720083646.png)
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)