首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

这个链表程序是怎么实现一个结点指向下一个结点的

2012-03-07 
这个链表程序是如何实现一个结点指向下一个结点的?#include iostream.htypedefstructnode//自定义类型No

这个链表程序是如何实现一个结点指向下一个结点的?
#include <iostream.h>
typedef   struct   node     //自定义类型Node
{
int   data;         //数据域
struct   node   *next;           //指针域      
}Node;

Node   *createlist(int[],int);
void   displist(Node   *);
void   freelist(Node   *);

void   main()
{
Node   *head;
int   a[]={3,6,2,7};
head=createlist(a,4);
displist(head);
freelist(head);
}

Node   *createlist(int   a[],int   n)         //建立一个链表  
{
Node   *head,*r,*s;
for(int   i=0;i <n;i++)
{
s=(Node   *)   new   (Node);       //建立一个新结点s
//s=new   Node;
s-> data   =a[i];
s-> next   =NULL;
if(i==0)
{
head=s;           //head为首结点指针
r=s;                 //r总是指向最后结点
}
else
{
r-> next   =s;         //链接接点s
r=s;
}
}
return   head;
}

这个链表程序是如何实现一个结点指向下一个结点的?请详细讲解一下,非常感谢!!!!

[解决办法]
struct node *next; //指针域
r-> next =s; //链接接点s
r=s; 将s给尾指针实现连接下一结点
[解决办法]
head为头指针, s指向每个用a的指构造的对象, r指向链表最后一个单元
i=0
结果: head指向a[0]构造的对象, s指向a[0]构造的对象, r指向a[0]构造的对象
i=1
结果: head指向a[0]构造的对象, s指向a[1]构造的对象, r指向a[1]构造的对象
i=2
结果: head指向a[0]构造的对象, s指向a[2]构造的对象, r指向a[2]构造的对象
i=3
结果: head指向a[0]构造的对象, s指向a[3]构造的对象, r指向a[3]构造的对象
最后
head指向a[0]构造的对象, r指向a[3]构造的对象
返回head 头指针


[解决办法]
r-> next 变为NULL是等待下一个循环,下一个循环中r-> next = s;这一句会把这个指针指向新建立的节点
然后r=s;这一句相当于r=r-> next;将r指针再次下移到后面的节点

[解决办法]
Node *head=NULL;
Node *createlist(int a[],int n){

Node *temp;

for(int i=0;i <n;i++)
{
temp-> data=a[i];
temp-> next=head;
head=temp;
}
return head;
}

热点排行