标签:
1、
在认识链表结构exe部分
A、链表结构
B、链表的初始化
C、在链表中插入数据(结点)
D、链表的遍历
2、
链表:
链表有单向链表,也有双向链表,有循环的(环形),在这里我们只讨论 双向循环链表。
双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直接后继和直接前驱。所以,从双向链表中的任意一个结点开始,都可以很方便地访问它的前驱结点和后继结点。一般我们都构造双向循环链表。
认识链表结构
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));
}
标签:
原文地址:http://www.cnblogs.com/debugskill/p/5374292.html