对C语言来说,使用指针是创建数据结构所必不可少的工具,
例如需要定义一个单向链表,往往使用以下的方式:
typedef struct Node {
struct Node* pNext;
void* pData;
} NodeStruct, *pNodeStruct;
typedef struct SingleLinkedList {
pNodeStruct pHead;
pNodeStruct pTail;
} SingleLinkedListStruct, *pSingleLinkedListStruct;
其中,NodeStruct中的pNext,为指向下一个元素的指针,如果为NULL,则到达队尾,pData为指向数据的指针,为通用起见使用void*定义,SingleLinkedListStruct为单向链表,pHead为头,pTail为队尾,如果pHead == pTail == NULL,则链表为空,pHead始终指向头部的第一个元素,pTail始终指向最后一个元素。
为这个单向链表实现在头部及尾部加入数据节点的函数,实现通过比较数据内容pData相等进行,如*pData都是10,则删除。注意,*pData并不一定是int。删除元素。比较数据必须使用以前课程的内容,利用函数指针。
例如需要定义一个单向链表,往往使用以下的方式:
typedef struct Node {
struct Node* pNext;
void* pData;
} NodeStruct, *pNodeStruct;
typedef struct SingleLinkedList {
pNodeStruct pHead;
pNodeStruct pTail;
} SingleLinkedListStruct, *pSingleLinkedListStruct;
其中,NodeStruct中的pNext,为指向下一个元素的指针,如果为NULL,则到达队尾,pData为指向数据的指针,为通用起见使用void*定义,SingleLinkedListStruct为单向链表,pHead为头,pTail为队尾,如果pHead == pTail == NULL,则链表为空,pHead始终指向头部的第一个元素,pTail始终指向最后一个元素。
为这个单向链表实现在头部及尾部加入数据节点的函数,实现通过比较数据内容pData相等进行,如*pData都是10,则删除。注意,*pData并不一定是int。删除元素。比较数据必须使用以前课程的内容,利用函数指针。