注册 登录
编程论坛 C++教室

麻烦大家帮忙看看

a986776335 发布于 2013-04-03 15:40, 582 次点击
#include

struct Node
{
int Data;
Node* next;
};
class list
{
Node* head;
public:
list(){head=NULL;}
//void insertlist(int aDate,int bDate);//链表结点的插入
void insertlist(int Date);
void Deletelist(int aDate);//链表结点的删除
void Outputlist();//链表结点的输出
Node*Gethead(){return head;}
};
void list::insertlist(int Date)//单链表插入
{
    Node *p,*s;

    s=((Node*)new Node);
    s->Data=Date;

    p=head;
    if(head==NULL)
    {
        head=s;
        s->next=NULL;
    }
    else
    {
        p->next=s;
        s->next=NULL;
    }
}
void list::Outputlist()
{
    Node* current=head;
    while(current!=NULL)
    {
        cout<Data<<'\t';
        current =current->next;
    }
}
void main()
{
    list a;
    for(int i=1;i<10;i++)
    {
        a.insertlist(i);
        cout<<ENDL;
    }
        a.Outputlist();
}
不知道为什么无法得到预期的结果,这样子的结果输出的数据是 1     9;
麻烦大家帮忙看看。哪里有错。
5 回复
#2
peach54602013-04-03 20:41
程序代码:
void list::insertlist(int Date)//单链表插入
{
    Node *p,*s;

    s=((Node*)new Node);
    s->Data=Date;

    p=head;
    if(head==NULL)
    {
        head=s;
        s->next=NULL;
    }
    else
    {
        p->next=s;
        s->next=NULL;
    }
}

告诉我你这段insert的逻辑是什么...
#3
fanpengpeng2013-04-03 20:50
s=((Node*)new Node);

那个告诉你 new也要进行类型转换的啊 最外这一层的()是其什么作用啊
#4
a9867763352013-04-05 18:54
回复 2楼 peach5460
首先创建一个新的节点s,然后判断头节点是否为空。为空着s赋值为头结点。next为NULL,如果头节点不为空。则上一个节点的下一个节点赋值为s ,s的下一个节点为NULL,这个逻辑帮忙看一下。
#5
a9867763352013-04-05 18:54
回复 3楼 fanpengpeng
额。那个只是。多余的
#6
peach54602013-04-05 19:19
以下是引用a986776335在2013-4-5 18:54:02的发言:

首先创建一个新的节点s,然后判断头节点是否为空。为空着s赋值为头结点。next为NULL,如果头节点不为空。则上一个节点的下一个节点赋值为s ,s的下一个节点为NULL,这个逻辑帮忙看一下。
上一个节点在哪?
1