一、在单链表中插入新元素
int Insert (LinkList first, ListData x, int i ) {
//将新元素 x 插入在链表中第 i 号结点位置
ListNode * p = Locate ( first, i-1 );
if ( p == NULL ) return 0; //不插入
ListNode * newnode = //创建新结点
(ListNode *) malloc (sizeof (ListNode) );
newnode->data = x;
newnode->link = p->link; //链入
p->link = newnode;
return 1; //插入成功,函数返回1
}
二、在单链表中删除一个结点
q = p->link;
p->link = q->link;
delete q;
操作:
int delete ( LinkList first, int i ) {
//将链表第 i 号元素删去
ListNode * p = Locate ( first, i-1 );
//寻找被删结点的前驱结点
if ( p == NULL || p->link == NULL)
return 0; //不删除
ListNode * q = p->link; //被删结点地址
p->link = q->link; //摘下被删结点
free ( q ); //释放
return l;
}