其他分享
首页 > 其他分享> > 数据结构2.2 线性表链式存储

数据结构2.2 线性表链式存储

作者:互联网

线性表链式存储

不要求逻辑上相邻的元素物理上也相邻

链式线性表的格式

typedef struct LNode *List;
typedef struct LNode {
telementType data;
List Next;
};
List Ptrl;

操作集:

求表长:

int length(List Ptrl){
List P=Ptrl;//P指向Ptrl的表头。
int j=0;//j为计数器
while(P){//P不为空
P=P->next;//读取P的下一个结点直到最后
j++;

}
return j;
}

查找:

1,按序号查找:

int Findk(int k,List Ptrl){//k是要查找的数值
List P=Ptrl;
while(P!=NULL&&p->data!=k){//判断
p=p->next;
}
if(P!=NULL){
return i;//找到了
}
else
return -1;//未找到
}

 

 

2,按值查找:

int Findk(int k,List Ptrl){//k是要查找数值
List P=Ptrl;
while(P!=NULL&&P->data!=k){//判断数值是否相等
p=p->next;
}
if(P!=NULL){
return i;//找到了
}
else
return -1;//未找到
}

插入:(插入第i个元素的位置)

List insert(List Ptrl,int i)
{
List p,j;//临时链表j和插入链表p;
if(i==1)//i为1是头指针,要特殊处理
{
P=(List)malloc(sizeof(List));
p=Ptrl;
return p;
}
j=findk(i-1);//查找第i-1个结点的函数
if(j==NULL){//参数错误
return NULL;
}
else{
p=(List)malloc(sizeof(List));
p->next=j->next;//P指向第i个元素
j->next=p;//j指向插入指针p。
return Ptrl;
}
}

时间复杂度为O(n)。

删除:要释放被删除的结点占用的内存空间(free)。

 

标签:结点,return,线性表,int,List,next,Ptrl,2.2,数据结构
来源: https://www.cnblogs.com/dragon246810/p/16413107.html