在链表插入和删除中会用到二级指针,比如removelist(ListNode** phead int value);
因为删除或者插入操作有时会修改实参的指针(比如头结点为空的时候插入节点,这是就修改了头结点),那么就必须将相应的形参说明为指针的指针,函数调用时将实参指针的地址传递给相应的形参。
typedef struct node{
DataType data;//节点的数据域
struct node *next;//节点的指针域
}ListNode;
typedef ListNode *LinkList;
ListNode *p;//p是节点
LinkList head;//head是头指针
例如:刚刚初始化的时候头结点head为空,如果这时插入节点p(由上可知p是ListNode*类型的,是个指针,把它当做地址)时应该是head=p;这就改变了head的地址,所以在传参数的时候,函数的形参一般都是"Insert(LinkList *head,DataType x)",