表头插入
//批量头插
void ListHead_Insert(LNode *L)
{
int value = 0;
LNode *p = L;
while (1)
{
scanf("%d", &value);
if (9999 == value)
break;
LNode *newLNode = (LNode*)malloc(sizeof(LNode));
newLNode->data = value;
newLNode->next = p->next;
p->next = newLNode;
}
}
表尾插入
//批量尾插
void ListTail_Insert(LNode *L)
{
int value = 0;
LNode *p = L;
while (p->next)
p = p->next;
while (1)
{
scanf("%d", &value);
if (9999 == value)
break;
LNode *newLNode = (LNode*)malloc(sizeof(LNode));
newLNode->data = value;
newLNode->next = NULL;
p->next = newLNode;
p = p->next;
}
}
两种方式插入结果
删除指定节点
//删除节点
bool DeleteList(LNode *L, int i)
{
LNode *cur = NULL;
LNode *tmp = NULL;
if (i < 1)
return false;//i至少为1
cur = L;
int j = 0;
while (cur && j<i-1)
{
cur = cur->next;
j++;
}
if (NULL==cur||NULL == cur->next)
return false;//i越界
tmp = cur->next;//临时存放删除节点地址
if (cur->next->next)
cur->next = cur->next->next;//删除最后一个节点以外
else
cur->next = NULL;//删除最后一个节点
free(tmp);//释放删除节点
tmp = NULL;
return true;
}