0603作业

复制代码
/*                                                      
 * function:    直接插入排序
 * @param [ in] 
 * @param [out] 
 * @return      
 */
void insert_sort_linklist(linklist* head,datatype data){
    linklist* p=head;
    while(NULL!=p->pnext && p->pnext->param < data){
        p=p->pnext;
    }

    linklist* temp=create_linklist(data);

    temp->pnext = p->pnext;
    p->pnext = temp;
    head->param++;
}
 /*
  * function:    倒序链表
  * @param [ in] 
  * @param [out] 
  * @return      
  */
void linklist_desc(linklist* head){

    linklist* p=head->pnext;
    linklist* q=NULL;

    while(next!=NULL){
        q=p->pnext;
        p->pnext=head->pnext;
        head->pnext=p;
        p=pnext;
    }

}
/*
 * function:    快慢指针
 * @param [ in]         
 * @param [out] 
 * @return      
 */
void fast_slow_point(linklist* head){

    if(head==NULL||head->pnext==NULL){
        return;
    }

    linklist* fast,slow;
    fast=slow=head->pnext;

    while(fast!=NULL||fast->pnext!=NULL){
        fast=fast->pnext->pnext;
        slow=slow->pnext;
    }
    printf("中间值:%d\n",(int)slow->param);

}

#include "./t2_impl.h"


//创建单向循环链表 头结点
lk* create_head_loop_linklist(datatype data){
    lk* head=create_node_loop_linklist();

    head->data=data;
    head->next=head;
    return head;
}
//创建节点
lk* create_node_loop_linklist(){
    lk* node=(lk*)malloc(sizeof(lk));
    if(NULL==node){
        puts("节点创建失败");
    }
    return node;
}

//头插
void insert_head_loop_linklist(lk* head,datatype data){
    lk* node=create_node_loop_linklist();

    node->next=head->next;
    head->next=node;
    node->data=data;
    head->data++;
    puts("头插成功");
}
//尾插
void insert_last_loop_linklist(lk* head,datatype data){
    lk* node=create_node_loop_linklist();
    lk* temp=head;
    while(temp->next!=head){
        temp=temp->next;
    }
    node->next=temp->next;
    node->data=data;
    temp->next=node;

    head->data++;
    puts("尾插成功");
}
//遍历
void print_linklist(lk* head){
    lk* temp=head;
    puts("---------遍历----------");
    while(temp->next!=head){
        temp=temp->next;
        printf("%d \n",temp->data);
    }
    puts("-----------------------");
}
//头删
void delete_head_loop_linklist(lk* head){
    lk* temp=head->next->next;
    free(head->next);
    head->next=temp;
    head->data--;
    puts("头删完成");
}
//尾删
void delete_last_loop_linklist(lk* head){
    lk* temp=head->next;
    while(temp->next->next != head){
        temp=temp->next;
    }
    free(temp->next);
    temp->next=head;
    head->data--;
    puts("尾删完成");
}

部分代码及其结果

乔瑟夫问题:

复制代码
node* joseph_createNode_linklist(int n){
        node* head=NULL;
        node* temp=NULL;
        for(int i=1; i<=n; i++){
                node* newNode = (node*)malloc(sizeof(node));
                newNode->data = i;
                newNode->next = NULL;

                if(head == NULL){
                        head = newNode;
                        temp = head;
                } else {
                        temp->next = newNode;
                        temp = newNode;
                }
        }
        temp->next = head;
        return head;
}
void printList(node* head) {
    node* temp = head;
    do {
        printf("%d ", temp->data);
        temp = temp->next;
    } while (temp != head);
    printf("\n");
}

void joseph_linklist(node* head, int n, int k, int m){
    node* current = head;
    node* prev = NULL;
    int count = 0;

    for(int i=0; i<k-1; i++) {
        current = current->next;
    }

    while(current->next != current) {
        count++;
        if(count == m) {
            printf("Out: %d\n", current->data);
            prev->next = current->next;
            count = 0;
            current = prev->next;
        } else {
            prev = current;
            current = current->next;
        }
    }

    printf("Last: %d\n", current->data);
}
相关推荐
软件技术NINI20 小时前
JavaScript性能优化实战指南
前端·css·学习·html
Blossom.11820 小时前
多模态大模型LoRA微调实战:从零构建企业级图文检索系统
人工智能·python·深度学习·学习·react.js·django·transformer
一 乐21 小时前
健身房预约|基于springboot + vue健身房预约小程序系统(源码+数据库+文档)
java·数据库·vue.js·spring boot·后端·学习·小程序
sbc-study21 小时前
comsol学习-碱性电解槽堆中的分流-电化学,水解电槽,碱性
学习·comsol·电解槽·碱性·非局部耦合算子
wdfk_prog21 小时前
[Linux]学习笔记系列 -- [fs]kernfs
linux·笔记·学习
代码游侠21 小时前
学习笔记——IO多路复用技术
linux·运维·数据库·笔记·网络协议·学习
华舞灵瞳1 天前
学习FPGA(八)快速傅里叶变换
学习·fpga开发
褪色的博客1 天前
强化学习入门:价值学习——从“试错”到“预判”的飞跃
学习
wdfk_prog1 天前
[Linux]学习笔记系列 -- [fs]inode
linux·笔记·学习
AI视觉网奇1 天前
ue 蓝图动画学习笔记
笔记·学习·ue5