认识链表结构exe部分

A链表结构

 B链表的初始化

 C、在链表中插入数据(结点)

 D、链表的遍历

链表:

  链表有单向链表,也有双向链表,有循环的(环形),在这里我们只讨论 双向循环链表。

双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表

 认识链表结构

 typedef struct node

{

  struct node R;

  struct node L;

  int data;

}*PDATALINK,DATALINK;

 PDATALINK head=new DATALINK;

 

 //初始化链表

  head->L=head->R=head;

 //在链表中插入个元素

 PDATALINK pnode=new DATALINK;

 PDATALINK pt;

 for (int i=1;i<=5;i++)

{

 pnode->data=i;

 pt=head->R;

 pnode->R=pt;

 pnode->L=head;

 head->R=pnode;

 pt->L =pnode;

 

}

 //遍历链表数据,并显示

 pt=head;

 do

{

   printf("pt->data=%x\n",pt->data);

   pt=pt->R;

} while(pt!=head) // while(!(pt==head))

//文件名:Linktype.h

typedef struct _DATA_LINK

{

/*链域,*llink是左链域指针,*rlink是右链域指针*/

struct _DATA_LINK *L;

struct _DATA_LINK *R;

// struct _DATA_LINK *Head;

int data; /*数据域*/

int data2;

}DATA_LINK,*PDATA_LINK;

//LIST_ENTRY My_List; //自定义链接头

PDATA_LINK head=new DATA_LINK;

VOID Link_Test()

{

        

         //初始化链表

          head->L=head->R=head;

          head->data=0;

          head->data2=0;

    printf("head=%x\n",head);

         PDATA_LINK Tlink;

         ULONG i = 0;

         //在链表中插入5个元素

         printf(("开始构建链表 \n"));

         for (i=1 ; i<=5 ; i++)

         {

            PDATA_LINK       pData =new DATA_LINK; 

            pData->data = i;

            pData->data2= i+1;

            //

            Tlink=head->R;//保存后续结点

            Tlink->L=pData;

            head->R=pData;

            //

            pData->R=Tlink;

            pData->L=head;

 

          //  printf("Node%d=%x,R=%x,L=%x,%d,%d\n",

           //   pData->data-7,pData,pData->R,pData->L,pData->data,pData->data2);         

         }

         //从链表中取出,并显示

         printf("head=%x\n",head);          

    PDATA_LINK pnode=head;

      do   //判断 遍历完成否

         {

        

                  //显示链表内存结构

                  printf("结点%d=%x,R=%x,L=%x,%d,%d\n",

                  pnode->data,pnode,pnode->R,pnode->L,pnode->data,pnode->data2);

                  pnode=pnode->R;

         } while (!(pnode==head));        

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小蚂蚁_CrkRes

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值