这个单循环链表建立的问题在哪呀?

qingqing_9020 2013-12-02 12:01:03
#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();
int Get(int i);
int Locate(int x);
void Insert(int i,int x);
int Delete(int i);
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;

}
s->next=head;

}

int SingleLinkedList::Length()
{

int count;
s=head->next;count=0;
while(s->next!=head)
{
s=s->next;
count++;
}
return count;
}

int SingleLinkedList::Get(int i)
{
int count;
s=head->next;count=1;
while(s->next!=head&&count<i)
{
s=s->next;
count++;
}

return s->mydata;
}

int SingleLinkedList::Locate(int x)
{
int count;
s=head->next;count=1;
while(s->next!=head)
{
if(s->mydata==x) return count;
s=s->next;
count++;
}
return 0;
}

void SingleLinkedList::Insert(int i,int x)
{
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}

p=new Node;p->mydata=x;
p->next=s->next;s->next=p;

}

int SingleLinkedList::Delete(int i)
{
int x;
s=head;int count=0;
while(s->next!=head&&count<i-1)
{
s=s->next;
count++;
}

p=s->next;x=p->mydata;
s->next=p->next;
delete p;
return x;
}



void SingleLinkedList::PrintList()
{
s=head->next;
while(s->next!=head)
{
cout<<s->mydata<<endl;
s=s->next;
}
}

SingleLinkedList::~SingleLinkedList()
{
while(head!=NULL)
{
s=head;
head=head->next;
delete s;
}
}

void main()
{

int a[4]={1,2,2,4};
SingleLinkedList list(a,4);
list.Length();

}
...全文
126 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
qingqing_9020 2013-12-02
  • 打赏
  • 举报
回复
引用 1 楼 worldy 的回复:
请先说说你的思路
从头结点的下一指针开始赋值,最后一个结点再指向头结点,剩下的一些函数都是关于单循环链表的操作。
worldy 2013-12-02
  • 打赏
  • 举报
回复
请先说说你的思路
TAXUEc750 2013-12-02
  • 打赏
  • 举报
回复
引用 6 楼 TAXUEc750 的回复:
引用 5 楼 qingqing_9020 的回复:
[quote=引用 4 楼 TAXUEc750 的回复:] 你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
我建立了一个单循环链表,现在想求链表的长度,但在编译的时候有问题,会出现停止工作,麻烦帮忙看一下。谢谢啦
你这个编译的时候出错是因为main函数的返回值不能是void 改成 int main(){}就可以了。另外你这个程序在运行的时候会崩溃,原因是在你析构的时候不对。你虽然说是单链,可是你自己构造的时候是构造成了环链,所以是不会存在next指针为NULL的情况。还有,初步看了下,你的求长度的那个函数返回结果是不对的,原因自己找吧,很低级的错误,边界不对。骚年,语法很不熟啊[/quote]对了,千万别告诉我,你不知道单链和环链的区别,我会想死的
TAXUEc750 2013-12-02
  • 打赏
  • 举报
回复
引用 5 楼 qingqing_9020 的回复:
引用 4 楼 TAXUEc750 的回复:
你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
我建立了一个单循环链表,现在想求链表的长度,但在编译的时候有问题,会出现停止工作,麻烦帮忙看一下。谢谢啦
你这个编译的时候出错是因为main函数的返回值不能是void 改成 int main(){}就可以了。另外你这个程序在运行的时候会崩溃,原因是在你析构的时候不对。你虽然说是单链,可是你自己构造的时候是构造成了环链,所以是不会存在next指针为NULL的情况。还有,初步看了下,你的求长度的那个函数返回结果是不对的,原因自己找吧,很低级的错误,边界不对。骚年,语法很不熟啊
qingqing_9020 2013-12-02
  • 打赏
  • 举报
回复
引用 4 楼 TAXUEc750 的回复:
你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
我建立了一个单循环链表,现在想求链表的长度,但在编译的时候有问题,会出现停止工作,麻烦帮忙看一下。谢谢啦
TAXUEc750 2013-12-02
  • 打赏
  • 举报
回复
你舍得说明一下,出现什么问题了么。这么长的代码给你看下去要死人啊
yulinlang 2013-12-02
  • 打赏
  • 举报
回复

#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;
}

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧