菜鸟一枚,请问如何编写插入和删除函数
请各位高手帮帮忙,如何编写 Insert(L,n,i) 函数和 Delete(L,i)函数,请指点
无论是顺序表还是链表,步骤大致都是一样的。
Insert:1、判断 i 值是否合法;2、若合法分配存储空间(链表是生成新结点);3、找到插入位置,插入
Delete就更容易了
不多说,百度就可以看到代码
程序代码:bool insert_list(PNODE pHead,int pos,int val)
{
int i=0;
PNODE p=pHead;
while(NULL!=p&&i<pos-1)
{
p=p->pNext;
++i;
}
if (i>pos-1||NULL==p)
return false;
PNODE pNew=(PNODE)malloc(sizeof(NODE));
if (NULL==pNew)
{
printf("动态分配内存失败!\n");
exit(-1);
}
pNew->data=val;
PNODE q=p->pNext;
p->pNext=pNew;
pNew=q;
return true;
}
bool delete_list(PNODE,int,int *)
{
int i=0;
PNODE p=pHead;
while(NULL!=p && i<pos-1)
{
p=p->pNext;
++i;
}
if (i>pos-1||NULL==p->pNext)
return false;
PNODE q=p->pNext;
if (NULL==pNew)
{
printf("动态分配内存失败!\n");
exit(-1);
}
pNew->data=val;
PNODE q=p->pNext;
*pVal=q->data;
//删除p结点后面的结点
p->pNext=p->pNext->pNext;
free(q);
q=NULL;
return true;
}