赞
踩
ListInsert(&L,i,e)
:插入操作。在表L的第i个位置上插入指定元素e。typedef struct LNode{ ElemType data; struct LNode *next; }LNode,*LinkList; //在第i个位置插插入元素e(带头结点) bool ListInsert(LinkList &L, int i, ElemType e){ if(i<1) return false; LNode *p; //指针p指向当前扫描到的结点 int j=0; //当前p指向的是第几个结点 p = L; //L指向头结点,头结点是第0个结点(不存数据) while(p != NULL && j<i-1){ //循环找到第i-1个结点 p = p -> next; j++; } if( p == NULL) //i值不合法 return false; //1.malloc申请新的结点空间 LNode *s = (LNode *)malloc(sizeof(LNode)); //2.将参数e存入新结点里面 s -> data = e; //3.将s指向新结点e的next指针指向p结点next指向的位置 s -> next = p -> next; //4.将p结点的next指针指向新的结点 p -> next = s; //将结点s连到p之后 return true;//插入成功 }
while(p!=NULL && j<i-1){//循环找到第2个结点
p = p -> next;
j++;
}
ListInsert(&L,i,e)
:插入操作。在表L的第i个位置上插入指定元素e。typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; //后插操作:在p结点之后插入元素e bool InsertNextNode(LNode *p, ElemType e){ if(p==NULL) return false; //1.malloc申请空间 LNode *s = (LNode *)malloc(sizeof(LNode)); if(s == NULL) //内存分配失败 return false;z //2.将数据元素e填到新结点当中 s -> data = e; //用结点s保存数据元素e //3.将p的next指向下一个元素赋值给新数据元素e的next指向下一个元素 s -> next = p -> next; //4.将p的next指向新数据元素e p -> next = s; //将结点s连接到p之后 return true; }
ListDelete(&L,i,&e)
:删除操作。删除表L中第i个位置的元素,并用e返回删除元素的值。typedef struct LNode{ ElemType data; struct LNode *next; }LNode, *LinkList; bool ListDelete(LinkList &L, int i, ElemType &e){ if(i<1) return false' LNode *p; //指针p指向当前扫描到的结点 int j=0; //当前p指向的是第几个结点 p = L; //L指向头结点,头结点是第0个结点(不存储数据) while(p != NULL && j<i-1){ //循环找到第i-1个结点 p = p->next; j++; } if(p == NULL) //i值不合法 return false; if(p -> next == NULL) //第i-1个结点之后已没有其他结点 return false; LNode *q = p -> next; //令q指向被删除结点 e = q -> data; //用e返回元素的值 p -> next = q -> next; //将*q结点从链中“断开” free(q); //释放结点的存储空间 return true; //删除成功 }
//删除指定结点 p
bool DeleteNode(LNode *p)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。