一、单链表中的插入与删除
插入
第一种情况:在第一个结点前插入
newnode->link = first ;
first = newnode;
第二种情况:在链表中间插入
newnode->link = p->link;
p->link = newnode;
二、单链表中的插入与删除
int Insert ( LinkList& first, int x, int i ) {
//在链表第 i 个结点处插入新元素 x
ListNode * p = first; int k = 0;
while ( p != NULL && k < i -1 )
{ p = p->link; k++; } //找第 i-1个结点
if ( p == NULL && first != NULL ) {
printf ( “无效的插入位置!\n” );
return 0;
}
ListNode * newnode = //创建新结点
(ListNode *) malloc ( sizeof (ListNode) );
newnode->data = x;
if ( first == NULL || i == 1 ) { //插在表前
newnode->link = first;
first = newnode;
}
else { //插在表中或末尾
newnode->link = p->link;
p->link = newnode;
}
return 1;
}