2022-9-16 数据结构的分析

发布于:2022-12-13 ⋅ 阅读:(489) ⋅ 点赞:(0)

1.

// main.c
#include <stdio.h>
#include <stdlib.h>
#include "head.h"
#define N 8
#define M 4
int main(int argc,const char *argv[])
{
    LoopLink L = loop_create();
    if (NULL == L)
    {   
        printf("创建失败\n");
        return -1;
    }
    for (int i = 2; i <= N; i++)
    {
        loop_add(L,i);
    }
    loop_show(L);
    putchar(10);
    LoopLink p = L;
    while (p){
        p = loop_out(p,M);
    }
    L = NULL;
    putchar(10);
   return 0;
}

// head.h
#ifndef __HEAD_H__
#define __HEAD_H__
typedef struct Node
{
    union 
    {
        int len;
        int data;
    };
    struct Node *next;
}Node,*LoopLink;
 
LoopLink loop_create();
void loop_add(LoopLink L,int data);
LoopLink loop_out(LoopLink L,int n);
void loop_show(LoopLink L);
 
 
#endif

// head.c
#include<stdio.h>
#include<stdlib.h>
#include"head.h"
 
LoopLink loop_create()
{
    LoopLink L = (LoopLink)malloc(sizeof(Node));
    if(NULL == L)
    {
        printf("创建失败\n");
        return NULL;
    }
    L->next = L;
    L->data = 1;
    return L;
}
 
void loop_show(LoopLink L)
{
    LoopLink p = L;
    if(NULL == L || NULL == p)
    {
        printf("show失败\n");
        return;
    }
    do
    {
        printf("%d  ",p->data);
        p = p->next;
    }while (p != L);
    
}
 
void loop_add(LoopLink L,int data)
{
    LoopLink p = (LoopLink)malloc(sizeof(Node));
    if(NULL == L || NULL == p)
    {
        printf("add失败\n");
        return;
    }
    p->data = data;
    p->next = L;
 
    LoopLink q = L;
    while (q->next != L)
    {
        q = q->next;
    }
    q->next = p;
}
 
LoopLink loop_out(LoopLink L,int n)
{
    
    if (L == NULL)
    {
        printf("out失败\n");
        return NULL;
    }
    if(L->next == L)
    {
        printf("%d  ",L->data);
        return NULL;
    }
    for (int i = 0; i < n-2; i++)
    {
        L = L->next;
    }
    LoopLink p = L->next;
    L->next = p->next;
    printf("%d  ",p->data);
    free(p);
    return L->next;
}


网站公告

今日签到

点亮在社区的每一天
去签到