4.1 列表初始化
void vListInitialise( List_t * const pxList );
4.2 链表项初始化
void vListInitialiseItem( ListItem_t * const pxItem )
4.3 插入链表项
void vListInsert( List_t * const pxList, ListItem_t * const pxNewListItem )
void vListInsertEnd( List_t * const pxList, ListItem_t * const pxNewListItem )
4.4 移除列表项 因为列表项中存在属于哪个列表,所以参数只有列表项一项就够了
UBaseType_t uxListRemove( ListItem_t * const pxItemToRemove )
4.5 应用示例
void task1_task(void *pvParameters)
{
ListItem_t uNode1;
ListItem_t uNode2;
ListItem_t uNode3;
ListItem_t uNode4;
ListItem_t uNode5;
List_t uList;
vListInitialise(&uList);
vListInitialiseItem(&uNode1);
vListInitialiseItem(&uNode2);
vListInitialiseItem(&uNode3);
vListInitialiseItem(&uNode4);
vListInitialiseItem(&uNode5);
uNode1.xItemValue = 5;
uNode2.xItemValue = 10;
uNode3.xItemValue = 15;
uNode4.xItemValue = 20;
uNode5.xItemValue = 25;
printf("uList addr is %X\r\n",(int)&uList);
printf("uNode1.xItemValue = %X, uNode1 addr is %X\r\n",uNode1.xItemValue, (int)&uNode1);
printf("uNode2.xItemValue = %X, uNode2 addr is %X\r\n",uNode2.xItemValue, (int)&uNode2);
printf("uNode3.xItemValue = %X, uNode3 addr is %X\r\n",uNode3.xItemValue, (int)&uNode3);
printf("uNode4.xItemValue = %X, uNode4 addr is %X\r\n",uNode4.xItemValue, (int)&uNode4);
printf("uNode5.xItemValue = %X, uNode5 addr is %X\r\n",uNode5.xItemValue, (int)&uNode5);
printf("uList.uxNumberOfItems = %d\r\n",(int)uList.uxNumberOfItems);
printf("\r\n");
vListInsert(&uList,&uNode1);
printf("\r\nvListInsert(&uList,&uNode1);\r\n");
printf("uList.uxNumberOfItems = %d\r\n",(int)uList.uxNumberOfItems);
printf("uList.pxIndex = %X \r\n",(int)uList.pxIndex);
printf("uNode1.pxPrevious = %X \r\n",(int)uNode1.pxPrevious);
printf("uNode1.pxNext = %X \r\n", (int)uNode1.pxNext);
printf("uNode1.xItemValue = %X \r\n",(int)uNode1.xItemValue);
printf("\r\n");
vListInsert(&uList,&uNode5);
printf("\r\nvListInsert(&uList,&uNode5);\r\n"