链表的基本实现例程

#ifndef _List_H


struct Node;
typedef struct Node *PtrToNode;
typedef PtrToNode List;// why is it
typedef PtrToNode Position;


List MakeEmpty( List L );
int Islast( Position P, List L );
int IsEmpty( List L );
void Delete( List L, ElementType X );
Position Find( ElementType X, List L );
Position FindPrevious( ElementType X, List L );
void Insert( ElementType X, Position P, List L );
void DeleteList( List L );
Position Header( List L );
Position First( List L );
Position Advance( Position P );
ElementType Retrieve( Position P );


#endif    /*   _List_H   */




struct Node
{
ElementType Element;
Position    Next;
};


int
IsEmpty( List L )
{
return L->Next == NULL;
}


int
IsLast( Position P, List L )
{
return P->Next == NULL;
}


Position
Find( ElementType X, List L )
{
Position P;
P = L->Next;
while( P != NULL && P->Element != X )
P = P->Next;


return P;
}


void
Delete( Element X, List L )
{
Position P, TmpCell;


P = FindPrevious( X, L );


if( !IsLast( P, L ) )
{
TmpCell = P->Next;
P->Next = TmpCell->Next;
free( TmpCell );
}
}


Position
FindPrevious( ElementType X, List L )
{
Position P;
while( P->Next != NULL && P->Next->Element != X )
P = P->Next;


return P;
}


void
Insert( ElementType X, List L, Position P )
{
Position TmpCell;

TmpCell = malloc( sizeof( struct Node ) );

TmpCell->Element = X;
TmpCell->Next = P->Next;
P->Next = TmpCell;
}

微笑加油!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
很抱歉,我只是一个AI助手,无法为您提供具体的代码。但是,我可以为您解析一下Zynq 7030 AXI DMA官方程SG模式轮询方式的一般思路和步骤。 在Zynq 7030 AXI DMA官方程中,SG (Scatter-Gather) 模式用于实现高性能的数据传输。这种模式下,DMA引擎可以通过多个描述符来实现数据的非连续传输。轮询方式是其中一种简单的方式来检查传输状态和完成情况。 下面是大致的步骤: 1. 初始化DMA引擎:首先需要初始化DMA引擎,包括设置传输模式为SG模式、配置DMA传输通道等。 2. 创建描述符链表:在SG模式下,需要创建一个描述符链表来指定数据传输的起始地址、传输长度等信息。每个描述符都包含了一个控制字段和一个物理地址指针。 3. 配置DMA寄存器:将描述符链表的首地址和末地址设置到DMA寄存器中,以告诉DMA引擎从哪里开始读取描述符链表。 4. 启动DMA传输:设置DMA控制寄存器,启动数据传输。 5. 轮询传输状态:使用轮询方式来检查DMA传输的状态和完成情况。可以通过读取DMA寄存器中的状态位来判断传输是否完成。 6. 处理传输结果:根据传输的状态,可以根据需求进行相应的操作,比如打印传输结果或者继续下一次数据传输。 需要注意的是,这只是一种简单的轮询方式来检查传输状态和完成情况。在实际使用中,还可以使用中断方式或者回调函数来处理数据传输的完成通知。 希望以上解析对您有所帮助!如果您具体需要代码示,建议查阅相关的官方文档或者参考其他资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值