int List: Insert( int x, int i)t ∥/在链表第i个结点处插入新元素x ListNodesp- current; current= first for(k=0;k<1-1;k++)∥找第i1个结点 if current==NULL) break else current current->ink. if current== NULL & first ! NULL)( cout<<“无效的插入位置!n”; current=p; return o
int List :: Insert ( int x, int i ) { //在链表第i 个结点处插入新元素x ListNode * p = current; current = first; for ( k = 0; k < i -1; k++ ) //找第 i-1个结点 if ( current == NULL ) break; else current = current->link; if ( current == NULL && first != NULL ) { cout << “无效的插入位置!\n”; current = p; return 0; }
ListNode *newnode 创建新结点 new ListNode(x, NULL); if(frst==NULL‖i==0){∥插在表前 newnode-> link= first first= current newnode eise ∥/插在表中或末尾 newnode->link= current->link. current=current->link=newnode, return 1
ListNode *newnode = //创建新结点 new ListNode(x, NULL); if ( first == NULL || i == 0 ) { //插在表前 newnode->link = first; first = current = newnode; } else { //插在表中或末尾 newnode->link = current->link; current = current->link = newnode; } return 1; }
删除 ◆第一种情况:删除表中第一个元素 ◆第二种情况:删除表中或表尾元素 -a4 删除前 p 删除后 在单链表中删除含a的结点
◼ 删除 ◆ 第一种情况: 删除表中第一个元素 ◆ 第二种情况: 删除表中或表尾元素 在单链表中删除含ai的结点 ai-1 ai-1 ai ai ai+1 ai+1 p q 删除前 删除后
int List: Remove( int 1)i ∥/在链表中删除第i个结点 ListNode*p s qs Int k if(1-0 ∥删除表中第1个结点 &q= first; current -first= first->link; j else i p=current; current=first; ∥/找第i-1个结点 for(k=0;k<i-1;k++) if current== NULL) break; else current= current->link
int List :: Remove ( int i ) { //在链表中删除第i 个结点 ListNode *p, *q; int k = 0; if ( i == 0 ) //删除表中第 1 个结点 { q = first; current = first = first->link; } else { p = current; current = first; //找第 i-1个结点 for ( k = 0; k < i-1; k++ ) if ( current == NULL ) break; else current = current->link;
if( current-- NULL I current->link== NULL cout<<“无效的删除位置!n” current= p; return 0; se 删除表中或表尾元素 q= current->link;∥重新链接 current=current->link=q->link; ypex=q->data; delete q;∥删除q return x. /回第1个结点的值
if ( current == NULL || current->link == NULL ) { cout << “无效的删除位置!\n”; current = p; return 0; } else { //删除表中或表尾元素 q = current->link; //重新链接 current = current->link = q->link; } Type x = q->data; delete q; //删除q return x; //返回第i 个结点的值 }