菜鸟一枚,请问如何编写插入和删除函数
请各位高手帮帮忙,如何编写 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; }