顺序线性表和单链表的插入,删除操作
2014-01-26 16:50
323 查看
线性表的插入:
Status ListInsert_Sq(SqList &L,int i,ElemType e){
//在顺序线性表L中第i个位置之前插入新的元素e,
// i的合法值为1<=i<=ListLength_Sq(L)+1
if(L.length>=L.listsize)
{
newbase=(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
L.elem=newbase;
L.listsize+=LISTINCREMENT;
}
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)*(p+1)=*p;
*q=e;
++L.length;
return ok;
}// ListInsert_sq
线性表的删除:
Status ListDelete_Sq(SqList &L,int i,ElemType &e){
//在顺序线性表L中删除第i个元素,并用e返回其值,
// i的合法值为1<=i<=ListLength_Sq(L)
if((i<1)||(i>L.length)) return ERROR;
p=&(L.elem[i-1]);
e=*p;
q=L.elem+L.length-1;
for(++p;p<=q;++p)*(p-1)=*p;
--L.length;
return ok;
}//ListDelete_sq
单链表的插入:
Status ListInsert_L(LinkList &L,int i,ElemType e){
//在带头结点的单链表L中第i个位置之前插入元素e
p=L;j=0;
while(p&&j<i-1)
{p=p->next;++j;}
if(!p||j>i-1)return ERROR;
s=(LinkList)malloc(sizeof(LNode));
s->data=e;s->next=p->next;
p->next=s;
return OK;
} //ListInsert_L
单链表的删除:
Status ListDelete_L(LinkList &L,int i,ElemType &e){
p=L;j=0;
while(p->next&&j<i-1){
p=p->next;++j;
}
if(!(p->next)||j>i-1) return ERROR;
q=p->next;p->next=q->next;
e=q->data;free(q);
return OK;
}//ListDelete_L
相关文章推荐
- (一)顺序表和单链表的初始化、插入、删除等操作
- 顺序表,链表,静态链表的建立以及插入和删除操作
- 数据结构线性表之顺序表的基本操作插入、删除、遍历、初始化
- C_线性表----单链表的基本操作(构表、插入、删除、倒序、输出)
- 2016年12月23日学习总结----双向循环链表操作程序(头插、尾插、中间插入、删除)
- C++ 数据结构的单链表的建立,插入,删除操作
- 链表(单双链表)用法与基本操作(构建、查找、插入、删除)实现
- 完整的链表操作(定义-创建-插入-删除-输出)
- 双向链表插入、删除操作
- 链表插入与删除操作中的头、尾指针
- 数据结构:链表创建、显示、求和、插入、删除等操作的代码实现
- 数据结构之单向链表操作1-(插入,删除,交换,反转,排序等操作)
- java语言编写链表的基本操作(链表的创建,插入,删除,打印,排序)
- (C++版)链表(二)——实现单项循环链表创建、插入、删除等操作
- (C语言版)链表(四)——实现双向循环链表创建、插入、删除、释放内存等简单操作
- 顺序表的操作(初始化,修改,插入,删除)(求差集)
- 对链表进行创建、结点的删除和插入操作
- C语言各种链表操作(创建、打印、删除、插入、反转)
- 链表的基本操作(C语言版):建立,插入,删除,查找,输出
- C语言实现顺序表的插入、删除、查找、遍历等基本操作