void insert_LinkList(LinkList list, int pos, void* data)
{
if (list == NULL)
{
return;
}
if (data == NULL)
{
return;
}
struct LList* myList = list;
if (pos<0 || pos>myList->m_Size)
{
//无效位置,尾插
pos = myList->m_Size;
}
//创建临时节点
struct LinkNode* pCurrent = &myList->pHeader;
for (int i = 0; i < pos; i++)
{
pCurrent = pCurrent->next;
}
//通过循环找出插入位置前驱
//创建出新节点
struct LinkNode* newNode = malloc(sizeof(struct LinkNode));
newNode->data = data;
newNode->next = NULL;
//将新节点插入到链表中
newNode->next = pCurrent->next;
pCurrent->next = newNode;
//更新链表长度
myList->m_Size++;
}
可能是你malloc以后没有判断malloc是否成功,malloc如果遇到内存不足等问题时会返回NULL,假如返回了NULL,
NULL->data就是非法操作,这个取NULL的内容的操作就叫做取消对NULL的引用,可以尝试在malloc下面加:
if(newNode==NULL)return 0;