鱼C论坛

 找回密码
 立即注册
查看: 3613|回复: 0

[学习笔记] 腾讯面试题、快慢指针、初始链表、随机创建、打印、查找中间点

[复制链接]
发表于 2021-9-17 17:50:30 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
代码:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define MAXSIZE 20

typedef struct like
{
        int F;
        struct like *next;
}like, *likes;

void explainList();
void InitList(likes *T);        //初始化链表
void GetList(likes *T);                //创建20个随机数据
void PutList(like *T);                //打印所有链表数据
void MiddleList(like *T);        //快慢指针查询中间点

void MiddleList(like *T)
{
        like *temp = T;

        while (1)
        {

                if (temp->next == NULL)
                {
                        printf("此链表为基数中间点数据为%d", T->F);
                        break;
                }
                else if(temp->next->next == NULL)
                {
                        printf("此链表为偶数中间点数据为%d和%d", T->F, T->next->F);
                        break;
                }
                T = T->next;
                temp = temp->next->next;
        }

}

void PutList(like *T)
{
        while (1)
        {
                printf("<%d>", T->F);        
                if (T->next == NULL)
                {
                        break;
                }
                T = T->next;
        }
}
void GetList(likes *T)
{
        int i;
        like *temp, *tail;
        srand((unsigned)time(NULL));

        for (i = 0; i < MAXSIZE; i++)
        {
                temp = (likes )malloc(sizeof(like ));
                temp->F = (rand() % 100);
                temp->next = NULL;

                if ((*T)->next == NULL)
                {
                        (*T)->next = temp;
                } 
                else
                {
                        tail->next = temp;
                }
                tail = temp;
        }
}
void InitList(likes *T)
{
        *T = (likes )malloc(sizeof(like ));
        (*T)->next = NULL;
}


void explainList()
{
                printf("1、初始化链表\n");
                printf("2、创建20个数据\n");
                printf("3、打印链表所有数据\n");
                printf("4、快慢指针查询中间点\n");
                printf("0、结束本程序\n");
}

int main()
{
        int K;
        like *T;
        
        explainList();
        while(1)
        {
                printf("输入选项:");
                scanf("%d", &K);
                getchar();
                
                switch(K)
                {
                case 1:{
                        InitList(&T);
                           }
                        break;
                case 2:{
                        GetList(&T);
                           }
                        break;
                case 3:{
                        PutList(T->next);
                        putchar('\n');
                           }
                        break;
                case 4:{
                        MiddleList(T->next);
                        putchar('\n');
                           }
                        break;
                case 0:{
                        return 0;
                           }
                        break;
                }
                
        }
        
        return 0;
}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-22 23:54

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表