一. 数据结构干货系列之一:线性表基本操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一. 数据结构干货系列之一:线性表基本操作相关的知识,希望对你有一定的参考价值。

1. 如果一个链表结点数大于等于2,把首节点变为尾结点

status A(LinkList L){   //L是无头结点的单链表
   if(L&&L->next){
   Q=L;     P=L->next;
   while(P->next) {P=P->next;}
   P->next=Q; Q->next=null;
   }
   return ok;
}  //如果一个链表结点数大于等于2,把首节点变为尾结点。

 

2. 将单循环链表拆成两个单循环链表

void AA(LNode *a,LNOde *b){//指针a,b分别指向单循环链表中的两个结点
     BB(a,b);
     BB(b,a);
}

void BB(LNode *s,LNode *q){
     p=s;
     while(p->next!=q) p=p->next;
     p->next=s;
}

 

3. 有一个递增有序的顺序表va。将 x 插入到顺序表的适当位置上,保持顺序表有序

Status Insert (SqList &va,ElemType x){
    int i;
    if(va.length=va.listsize) return (overflow);
    for(i=va.length; x<va.elem[i-1] ; i--){ //把x依次与表中的元素作比较(从表尾部开始),elem[i-1]表示当前元素,如果当前元素大于x,则把当前元素后移一个位置.
          va.elem[i] = va.elem[i-1];
    }
    va.elem[i]=x;//如果当前元素elem[i-1]小于等于x,则x插入到当前元素elem[i-1]的前面,则x的插入位置为elem[i].
    va.length++;
    return ok;
}

 

4. 在带头结点的单链表结构上实现线性表操作 Locate(L,x)

int LocateElem_L(LinkList &L,ElemType x){
    
    int i=1;
    p=L->next; //此时,结点p为首元结点
    while(p&&p->data != x){
        p=p->next;
        i++;
    }  //结点p为空,或者结点p的数据域等于x,循环结束
    
    if(!p) return 0;//如果p结点为空
    else return i;
}

 

以上是关于一. 数据结构干货系列之一:线性表基本操作的主要内容,如果未能解决你的问题,请参考以下文章

数据结构与算法系列研究二——栈和队列

数据结构第二章小结

大厂算法系列编码手写顺序表相关功能,线性结构核心知识点详细剖析

Python数据结构系列《线性表》——知识点讲解+代码实现

Python数据结构系列《线性表》——知识点讲解+代码实现

#yyds干货盘点#顺序表一发入魂