链表的创建代码详解

11:16:26

#include<iostream.h>
/*链表是数据结构中很重要的一部分,后面的知识差不多都与
链表有关,
因此链表的意义在数据结构中就非同小可
*/
/************结点的定义**********
/一个指针结点有两部分组成:数据部分和指针部分,
/数据部分,是用户根据具体需要而定义的,而指针部分是用来链接接结点的,
/本质上指针部分是无用的,因为它白白占用了内存,但为了能使节点连起来,又必须使用节点.
/就是这样。
///*********/
typedef struct node
{
      int data;             //数据部分
      struct node* next;   //指针部分,用于指向下一个节点
}*Link_List;//定义一个Link_List指针,因为前面有个*,注意这个有个分号,与定义一个类相似
//********单链表的实现***   整个链表的核心  **********
Link_List Create_LinkList()//返回链表指针
{
 Link_List p,q,head;
      p=new node;  //动态分配内存空间//而在c语言中是用malloc函数实现的(注意:new
//是操作符,而malloc是函数,两个是截然不同的概念.
cout<<"请输入数字,以空格建分开,以0结束!!/n";
      cin>>p->data;
      head=p;//保存创造的第一个结点,即是头节点
      while(p->data) //如果输入的数字p->data为零,则退出循环
      {
           q=p;//保存临时创建的结点,以便下面的指针链接:q->next=p;即,
     //q结点的指针域指向下一个结点p
           //因为下面再创建新节点时p的地址有变化了,所以要保存起来。
/*******/p=new node;///创造新节点///
/*******/cin>>p->data;//为新创造的结点赋值///

           q->next=p;//链接指针,即是把刚创造的结点链接上
      q->next=NULL;//注意最后一个指针的next一定要赋值NULL,否则一个链表就没有结尾了
      return head;// 返回创造的链表的头指针
}
void print(Link_List l)
{
 while(l)
 {
  cout<<l->data<<" ";
  l=l->next;//再让l指向下一个节点;
 }
 cout<<endl;
}
void main()
{
 Link_List list=Create_LinkList();//让函数返回的链表头指针赋值给list;
 print(list);//打印创建的链表
}

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值