zoukankan      html  css  js  c++  java
  • C 约瑟夫环 链表

    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>  //stdlib.h 包括了malloc.h
    
    #define N 17
    
    typedef struct Node{
        int data;
        struct Node * next;
    }Node;
    
    Node * add21Node(Node * first);
    Node * delNode(Node * start);
    int main(){
        Node *first=(Node *)malloc(sizeof(Node));
        first->data=1;
        first->next=NULL;
    
    
        Node *last=add21Node(first);
        last->next=first;
        int i=0;
    
        //ok
        /*
        Node *p=first;
        while(i<100){
            i++;
            printf("%d",p->data);
            p=p->next;
        }*/
        Node *p=first;
        while(i<9){
            p=delNode(p);
            i++;
        }
        for(i=0;i<N-8;i++){
            printf("%d,",p->data);
            p=p->next;
        }
        
    
    }
    
    Node * add21Node(Node * first){
        Node *p=first;
        int i=1;
        while(i<=21){
            i++;//while循环千万不要忘记i++
            Node * newNode=(Node *)malloc(sizeof(Node));
            newNode->data=i;
            newNode->next=NULL;
            p->next=newNode;
    
            p=newNode;
        }
        return p;
    
    }
    
    
    /**
    删除指定位置的节点 返回下一个节点
    */
    Node * delNode(Node * start){
        Node *p=start;
        int i=1;
        while(i<N-1){
            i++;
            p=p->next;
        }//来到了要删除节点的前一个节点
        Node *del=p->next;
        printf("\n-%d--\n",del->data);
        //free(del);
        p->next=p->next->next;
        free(del);//free语句不能放在上面那句话前面
        
        return p->next->next;
    }
  • 相关阅读:
    Msql-51CTO笔记
    Elasticsearch 学习第一天
    大数据开发参考资料
    1.docker的安装
    java_根据实体字段中的中文汉字排序
    遍历set集合,进行数据的拼接
    关于integer 和int
    03.linux环境安装mysql8的安装包
    02.linux下面安装jdk8
    01.VMware15.5下安装Centos7
  • 原文地址:https://www.cnblogs.com/cart55free99/p/2983860.html
Copyright © 2011-2022 走看看