prey♡ 2023-05-28 14:29 采纳率: 50%
浏览 33

关于单链表指定结点的前插操作O(n)时间复杂度的c语言代码

(c语言)单链表中指定结点的前插操作
我知道有种时间复杂度最优的是O(1)
它的代码如下

bool InsertPriorNode_better(LNode* p,int e)
{
    if(p==NULL)
        return false;
    LNode* s=(LNode*)malloc(sizeof(LNode));
    if(s==NULL)
        return false;
    s->next=p->next;
    p->next=s;
    p->next->data=p->data;
    p->data=e;
    return true;
}

我想知道时间复杂度为O(n)的代码该如何实现

bool InsertPriorNode(LinkList L,LNode* p,int e)

函数声明为以上,思路是循环找到指定代码的前驱结点,然后插入
其中

typedef struct LNode
{
    int data;
    struct LNode* next;
}LNode,*LinkList;

即LinkList L相当于LNode*,命名不同是为了增强可读性
代码ok马上采纳!谢谢!

  • 写回答

1条回答 默认 最新

  • qzjhjxj 2023-05-28 15:36
    关注

    这么写,供参考:

    bool InsertPriorNode(LinkList L,LNode* p,int e)
    {
        if (!L || !p)
            return false;
        LNode* s = (LNode*)malloc(sizeof(LNode)),* pL = L;
        if (!s)
            return false;
        s->data = e;
        s->next = NULL;
        if (L == p){
            s->next=p->next;
            p->next=s;
            p->next->data=p->data;
            p->data=e;
            return true;
        }
        while (pL && pL->next != p) pL = pL->next;
        s->next=pL->next;
        pL->next=s;
        return true;
    }
    
    
    评论

报告相同问题?

问题事件

  • 创建了问题 5月28日

悬赏问题

  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥100 关于#audobe audition#的问题,如何解决?
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22