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);
}
相关推荐
星幻元宇VR4 分钟前
VR环保学习机|科技助力绿色教育新模式
大数据·科技·学习·安全·vr·虚拟现实
_一只小QQ35 分钟前
软考中级第二节
学习
月落归舟1 小时前
每日算法题 14---14.环形链表
数据结构·算法·链表
小飞菜涅2 小时前
fast-lio2复现
嵌入式硬件·学习·ubuntu
Century_Dragon2 小时前
哈弗M6汽车故障诊断与排除仿真教学软件:让课堂与实训无缝对接
学习
for_ever_love__2 小时前
Objective- C学习: 手动内存管理
c语言·学习·ios·objective-c
gechunlian882 小时前
Spring Security 官网文档学习
java·学习·spring
闻哥2 小时前
MySQL InnoDB 缓存池(Buffer Pool)详解:原理、结构与链表管理
java·数据结构·数据库·mysql·链表·缓存·面试
2401_853448232 小时前
Maix例程代码学习
学习
FPGA小迷弟3 小时前
FPGA工程师面试题汇总(二)
学习·fpga开发·verilog·fpga