关于链表的问题,自己写了一个很简单的,希望能人帮忙下有什么不足的地方

来源:百度知道 编辑:UC知道 时间:2024/06/08 11:39:51
只有头指针,和一个节点,之后再在头指针和第一个节点之间插入一个节点

#include "data.h"
#include "iostream.h"
#include "string.h"
#include "stdlib.h"

class data
{
public:
data();
virtual ~data();
int num;
int *next;
void cin_num(int Num);
};

void main()
{
data *l; //头指针
data *p; //第一个节点

l=(data *) malloc(sizeof(data)); //为头指针分配内存
p=(data *) malloc(sizeof(data)); //为第一个节点分配内存
p->num=10; //为其数据域赋值
l->num=NULL; //头指针的数据域为空
l->next=&p->num; //头指针的指针域=第一个节点数据域的地址
p->next=NULL; //第一个节点的指针域为空

data *s; //要插入的节点

s=(data *) malloc(sizeof(data)); //为其分配内存
s->num=20; //为其数据域赋值
s->next=l->next; //把头指针的指针域里面的装的地址赋值给s的指针域
l->next=&s->num; //把s的数据域地址赋值给l的指针域

cout&

有很多问题啊。
1,
l->num=NULL; //头指针的数据域为空
这样写是不对的,不合适,num是一个数值, 可默认为0,头结点的值可以不输出,因为没有意义。

改了如下:
class data
{
public:
data();
virtual ~data();
int num;
class data *next; /******** *****/
void cin_num(int Num);
};

void main()
{
data *l; //头指针
data *p; //第一个节点

l=(data *) malloc(sizeof(data)); //为头指针分配内存
p=(data *) malloc(sizeof(data)); //为第一个节点分配内存
p->num=10; //为其数据域赋值
l->num=0; /******** *****/
l->next=p; /******** *****/
p->next=NULL; //第一个节点的指针域为空

data *s; //要插入的节点

s=(data *) malloc(sizeof(data)); //为其分配内存
s->num=20; //为其数据域赋值
s->next=l->next; //把头指针的指针域里面的装的地址赋值给s的指针域
l->next=s; /******** *****/

while(l=l->next) /******** *****/
{
cout<<l->num<<endl; //显示
}

system("PAUSE");
}