您的位置:

用php实现一个循环单链表,循环单链表和单循环链表

本文目录一览:

PHP实现:如何在只给定单链表中某个结点的指针的情况下删除该结点

p是要删除的结点,q是p的前一个结点 q-next = p-next;//删除的结点的后一结点的首地址赋值给删除的结点的前一结点的next p-next-prior = q;//删除的结点的后一结点的prior指向删除的结点的前一结点的首地址

使用php循环语句输出一个5行*4列的表格,并且在每行输出1,2,3,4,5

table width="100%" border="2" cellspacing="2" cellpadding="2"

  tr

    td colspan="4" style="background:#9C0; color:#333; text-align:center"方法一/td

  /tr

//方法1 for循环  已知循环次数

$i=1;

for($i;$i6;$i++){

  

 tr

    td width="17%"? echo $i; ?/td

    td width="22%"nbsp;/td

    td width="28%"nbsp;/td

    td width="33%"nbsp;/td

  /tr

? }?   

  tr

    td colspan="4" style="background:#9C0; color:#333; text-align:center"方法二/td

  /tr

 

 tr  

?

//方法2  数组循环  

$arr = array(1, 2, 3, 4 ,5);

foreach ($arr as $value) { ?  

    

    td?  echo $value; ?/td

    tdnbsp;/td

    tdnbsp;/td

    tdnbsp;/td

  /tr  

 

 

  

? } ?

/table

试编写一个算法,把单链表改变成循环链表

将单链表改成循环链表只需将单链表最后一个结点的指针指向头结点,即p-next = head。

单链表是一种链式存取的数据结构,用一组地址任意的存储单元存放线性表中的数据元素。其数据是以结点来表示的,每个结点的构成:元素(数据元素的映象) + 指针(指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。

循环链表也是一种链式存贮结构。和单链表相比,循环链表中最后一个结点的指针域指向头结点,整个链表形成一个环。

用循环单链表实现循环队列,如何写出插入和删除的算法?

typedef struct CircleListNode{

Datatype d;        

struct CircleList *pre,*nxt;        

}*CircleList,CirListNode;

typedef struct

{

CircleList Head;

int num;

}CircleQueue;

void insertFront(CircleList *L,d);

{

if(!L)return NULL;

if(*L==NULL)

{

*L=(CircleList) malloc(sizeof(CirListNode));

*L-nxt=  *L-pre=*L ;

*L-d=d;

}

else

{      

CircleList p =(CircleList) malloc(sizeof(CirListNode));

p-nxt=*L;

p-pre=*L-pre;

*L-pre-nxt=p;

*L-pre=p;

*L=p;        

}

}

循环单链表是单链表的另一种形式,其结构特点链表中最后一个结点的指针域不再是结束标记,而是指向整个链表的第一个结点,从而使链表形成一个环。和单链表相同,循环链表也有带头结点结构和不带头结点结构两种,带头结点的循环单链表实现插入和删除操作较为方便。