- 博客(16)
- 收藏
- 关注
原创 力扣 环形链表一
给你一个链表的头节点 head ,判断链表中是否有环。 如果链表中有某个节点,可以通过连续跟踪 next 指针再次到达,则链表中存在环。 为了表示给定链表中的环,评测系统内部使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。注意:pos 不作为参数进行传递。仅仅是为了标识链表的实际情况。 如果链表中存在环,则返回 true 。 否则,返回 false 。 示例 1: 输入:head = [3,2,0,-4], pos = 1 输出:true 解释:链表中有一个环,其尾部...
2022-04-20 19:10:35
147
原创 力扣相交链表
给你两个单链表的头节点headA 和 headB ,请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点,返回 null 。 图示两个链表在节点 c1 开始相交: 题目数据 保证 整个链式结构中不存在环。 注意,函数返回结果后,链表必须 保持其原始结构 。 自定义评测: 评测系统 的输入如下(你设计的程序 不适用 此输入): intersectVal - 相交的起始节点的值。如果不存在相交节点,这一值为 0 listA - 第一个链表 listB - 第二个链表 skipA - .
2022-04-20 17:35:06
137
原创 链表中倒数第k个节点
输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。 例如,一个链表有 6 个节点,从头节点开始,它们的值依次是 1、2、3、4、5、6。这个链表的倒数第 3 个节点是值为 4 的节点。 示例: 给定一个链表: 1->2->3->4->5, 和 k = 2. 返回链表 4->5. 方法:快慢指针 /** * Definition for singly-linked list. * struct...
2022-04-17 10:43:20
166
原创 分割链表(牛客网)
现有一链表的头指针 ListNode* pHead,给一定值x,编写一段代码将所有小于x的结点排在其余结点之前,且不能改变原来的数据顺序,返回重新排列后的链表的头指针。 /* struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) {} };*/ class Partition { public: ListNode* partition(ListNode* ...
2022-04-17 10:40:13
125
原创 c语言实现单链表的创建,遍历,插入,删除,反转函数
#include<stdio.h> #include <stdio.h> #include<stdlib.h> int num=0; struct list{ int val; struct list*next; }; //创建链表函数 struct list* creat() { struct list* head,p; struct list*q;//q为前,p为后 head=NULL; printf("想创建的结点...
2022-04-15 18:04:35
1305
原创 c语言实现堆排序
堆排序的核心思想是建堆并调整 所以最重要的是写出调整函数 代码如下 #include <stdio.h> void swap(int*a,int*b) { int temp=*b; *b=*a; *a=temp; } void sift(int a[],int low,int high)//调整函数 { //a[]列表 //low 堆的根节点位置 //high 堆的最后一个元素位置 int i,j,tmp; i=low;//i最开始指向根节点 j=2*i+1;//j开
2022-01-10 16:50:22
544
原创 c语言实现快速排序函数
c语言实现快速排序 众所周知,快速排序在排序算法中时间复杂度较为低,为O(nlogn),而选择,冒泡等排序的时间复杂度均为O(n^2)。 所以,现在我们来用c语言实现快速排序算法。 代码如下:#include<stdio.h> int partation(int a[],int left,int right)//找出中值,并找出中值左右两边的数 { int tem=0; tem=a[left];//使临时值等于列表左边第一个数 while(left<right) { while
2022-01-08 17:11:47
822
原创 2021-11-03
打印结构体的方法 如果我们想用结构体输出一个学生的姓名,分数,以及学号可采用以下办法 一. 直接打印法 #include <stdio.h> //创建一个结构体类型 struct stu { char name[100]; int score; char id[100]; }; int main() { struct stu s1={"名字",100,"2021013"}; printf("%s\n",s1.name); printf("%d\n",s1.score); printf("%s\
2021-11-03 22:26:48
117
原创 2021-10-31
输出整形数的二进制数补码中1的个数 首先,我们最先想到循环%2 /2的方法 #include<stdio.h> int main() { int num=0,count=0; scanf("%d",&num); while(num) { if(num%2==1) count++; num=num/2; } printf("%d",count); return 0; } 但是这种方法有一定的弊端,如果输入的为负数答案会错误,于是我
2021-10-31 16:22:25
113
原创 2021-10-31
交换两个数的多种算法 临时变量法 就相当于引入一个空瓶子t,将a里面的水先倒入空瓶子中,再将b中的水倒入a中,最后将空瓶子中的水再倒回b中,这样就完成了两个数的交换 #include<stdio.h> int main() { int a,b,t; scanf("%d%d",&a,&b); t=a; a=b; b=t; printf("%d %d",a,b); return 0; } 而如果不引入临时变量如何完成两个数的交换呢 第一种采用加减法
2021-10-31 10:06:15
132
原创 2021-10-24
有序数组中采用二分查找法查找元素并输出其下标 如果采用一般的从头到尾循环查找,效率会比较低。于是我们采取二分查找法提高效率。 比如现在在1到9的有序数组中查找7 #include<stdio.h> //自定义函数 二分查找有序数组中的元素 int binary_search(int arr[],int k,int sz) { int left=0; int right=sz-1;//数组末尾元素的下标 while(left<=right) { int mid=(left+r
2021-10-24 21:36:37
97
原创 2021-10-21
PTA 计算函数P(n,x) 输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 输入一个整数n (n>=0)和一个双精度浮点数x,输出函数p(n,x)的值(保留2位小数)。 1 (n=0) x (n=1) ((2*n-1)*p(n-1,x)-(n-1)*p(n-2,x))/n (n>1) 例:括号内是说明 输入样例: 3 (repeat=3) 0 0.9 (n=0,x=0.9) 1 -9.8 (n=1,x=-9.8)
2021-10-21 11:15:30
592
原创 2021-10-20
PTA c语言 8-2 组织星期信息 (3 分) 输入一个正整数repeat (0<repeat<10),做repeat次下列运算: 定义一个指针数组将下面的星期信息组织起来,输入一个字符串,在表中查找,若存在,输出该字符串在表中的序号,否则输出-1。 Sunday Monday Tuesday Wednesday Thursday Friday Saturday 输入输出示例:括号内为说明,无需输入输出 输入样例 (repeat=3) : 3 Tuesday Wednesday year 结尾
2021-10-20 10:49:31
378
2
原创 2021-10-20
PTA c语言 6-8 查找满足条件的所有整数 (3 分) 本题要求编写程序,将输入的n个整数存入数组a中,然后在数组a中查找给定的x。如果数组a中的元素与x的值相同,输出所有满足条件的元素的下标(下标从0开始);如果没有找到,输出“Not Found”。 输入格式: 第1行输入一个正整数n(0<n≤10)和一个整数x,第2行输入n个整数,其间以空格分隔。题目保证数据不超过长整型整数的范围。 输出格式: 如果找到,输出所有与x的值相同的元素的下标,每行输出一个下标;如果没有找到,在一行中输出“Not
2021-10-20 10:37:42
2508
2
原创 2021-10-18
PTA 拼题A 6-7 数组元素的删除 (3 分) 完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置。 重复若干次这样的删除,得到最后的结果。 输入格式: 第一行包括一个整数n(1<=n<=100),表示数组元素的个数。 第二行输入n个数组元素,均为整数,用空格隔开。 第三行输入一个数k(1<=k<=100),表示要进行k次删除。 接下来k行,每行一个数x,表示要删除第x个元素。 输出格式: 输出经过k次删除后的数组
2021-10-18 20:10:34
181
原创 2021-10-17
Pta 拼题A C语言 用数组计算fibonacci数列的前12个数,并按每行打印3个数的格式输出。 输入格式: 无输入 输出格式: 请使用%6d的格式输出;注意输出最后一个数字后,有一个换行 输出样例: 1 1 2 3 5 8 13 21 34 55 89 144 我的代码: #include <stdio.h> int main() { int i,j,a[12]; a[1]=1; a[2]=1; for(i=3;i<=12;i++
2021-10-17 19:23:51
808
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人