65,209
社区成员
发帖
与我相关
我的任务
分享
你这个编译的时候出错是因为main函数的返回值不能是void 改成 int main(){}就可以了。另外你这个程序在运行的时候会崩溃,原因是在你析构的时候不对。你虽然说是单链,可是你自己构造的时候是构造成了环链,所以是不会存在next指针为NULL的情况。还有,初步看了下,你的求长度的那个函数返回结果是不对的,原因自己找吧,很低级的错误,边界不对。骚年,语法很不熟啊[/quote]对了,千万别告诉我,你不知道单链和环链的区别,我会想死的我建立了一个单循环链表,现在想求链表的长度,但在编译的时候有问题,会出现停止工作,麻烦帮忙看一下。谢谢啦 你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
你这个编译的时候出错是因为main函数的返回值不能是void 改成 int main(){}就可以了。另外你这个程序在运行的时候会崩溃,原因是在你析构的时候不对。你虽然说是单链,可是你自己构造的时候是构造成了环链,所以是不会存在next指针为NULL的情况。还有,初步看了下,你的求长度的那个函数返回结果是不对的,原因自己找吧,很低级的错误,边界不对。骚年,语法很不熟啊你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
#include <iostream>
using namespace std;
class Node
{
public:
int mydata;
Node *next;
Node() {
next = NULL;
}
Node(int data,Node *next1) {
mydata = data;
next = next1;
}
};
class SingleLinkedList
{
public:
Node *head,*s,*p;
SingleLinkedList(int a[],int n);
~SingleLinkedList();
int Length();
void PrintList();
};
SingleLinkedList::SingleLinkedList(int a[],int n)
{
head = new Node;
p = head;
for (int i = 0; i < n; i++) {
s = new Node;
s->mydata = a[i];
p->next = s;
p = s;
}
p->next = head;
}
int SingleLinkedList::Length()
{
int count = 0;
s = head->next;
while(s != head) {
count++;
s = s->next;
}
return count;
}
void SingleLinkedList::PrintList()
{
s = head->next;
while (s != head) {
cout << s->mydata << endl;
s = s->next;
}
}
SingleLinkedList::~SingleLinkedList()
{
s = head->next;
while (s != head) {
p = s;
s = s->next;
delete p;
}
delete head;
}
int main()
{
int a[4]= {1,2,2,4};
SingleLinkedList list(a,4);
list.PrintList();
cout << list.Length() << endl;
return 0;
}