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);
}
相关推荐
LGL6030A2 小时前
Java学习历程31——初识Spring Boot
java·spring boot·学习
阿达和自己4 小时前
springboot学习-springboot引入MyBatis-Plus
spring boot·学习·mybatis
旖旎夜光4 小时前
【C++ 基础入门】C++11 新特性(中):右值引用、移动语义与完美转发
开发语言·c++·笔记·学习
Pniubi5 小时前
力扣24. 两两交换链表中的节点(递归)
算法·leetcode·链表
§ꦿCFོ༉16 小时前
嵌入式八股文—C语言入门学习(四)
c语言·开发语言·学习
2603_9696948518 小时前
【JavaWeb学习记录】MyBatis核心知识点与实战笔记:从入门到动态SQL
笔记·sql·学习·mysql·mybatis·javaweb·学习方法
北京云帆互联科技1 天前
云帆培训考试系统更新说明:v9.3.0
java·学习
sxlishaobin1 天前
Maven Setting详解
java·学习·maven
li星野2 天前
相位补偿学习记录:把被颅骨“打乱“的声波重新对齐
学习
Z21-X2 天前
云原生运维学习笔记:ECShop全链路容器化部署与Docker底层资源隔离深度剖析
运维·笔记·学习·云原生