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);
}
相关推荐
白猫不黑1 小时前
网络安全/信息安全专业学习路线与入行指南:从大学到岗位的完整规划
网络·学习·安全·web安全·网络安全·黑客技术
世人万千丶1 小时前
鸿蒙项目实战 - 社区活动编排板:标签云布局算法与自动换行
学习·算法·华为·harmonyos·鸿蒙
丰锋ff2 小时前
基于 Qt 的智慧社区物业管理系统学习过程
学习
小贺儿开发2 小时前
Unity 程序员编曲花絮:汪峰《河流》细节修复
科技·学习·unity·程序员·音乐·demo·写代码
其实防守也摸鱼3 小时前
Codex破局:前端组件秒级生成的技术文章大纲
开发语言·前端·人工智能·学习·安全·web安全
wuhuhuan3 小时前
【JMeter 学习打卡 Day 5】控制流程和节奏的利器
学习·jmeter
YM52e3 小时前
鸿蒙ArkTS项目实战 - 门店陈列巡检台:完整代码与运行效果
学习·华为·harmonyos
️学习的小王3 小时前
NumPy完整学习笔记:ndarray数组详解、创建、索引切片、常用函数与运算
笔记·学习·numpy
snow@li4 小时前
PowerShell:零基础完全学习手册(通俗理解+多表格实战)
学习
老当益壮梁奶奶4 小时前
Linux软件编程学习笔记(二)Linux文件IO编程入门:从fopen到fgetc
linux·c语言·c++·笔记·学习