
c
香菜对菠菜说生菜爱吃花菜
这个作者很懒,什么都没留下…
展开
-
递归和非递归分别实现求n的阶乘
//递归和非递归分别实现求n的阶乘 #include<stdio.h>#include<stdlib.h>int a(int n){ if(n>1) { return n * a(n-1); } return 1;}int b(int n){ int s = 1; for(; n>=1; n--)原创 2018-11-29 22:18:48 · 510 阅读 · 0 评论 -
leetcode第206题,C语言反转单链表题
方法一:三指针反转法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* reverseList(struct ListNode* head) { struct Li...原创 2019-08-05 10:44:23 · 237 阅读 · 0 评论 -
顺序表的创建、增、删、查、改、打印、销毁
#include<stdio.h>#include<assert.h>#include<malloc.h>#include<stdlib.h>typedef int SLDataType;//可更改方便数据类型的动态数据表//静态顺序表typedef struct SeqList1 { int array[100]; //容量...原创 2019-08-05 09:14:34 · 162 阅读 · 0 评论 -
leetcode第203题用C语言移除链表元素
删除链表中等于给定值val的所有节点。方法一: 递归法/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */struct ListNode* removeElements(struct ListN...原创 2019-08-05 11:26:37 · 258 阅读 · 0 评论 -
牛客网 输入一个链表,输出倒数第k个节点
/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/class Solution {public: ListNode* FindKthToTail(ListNode* pListHead, unsigned int k) { ...原创 2019-08-05 11:45:25 · 173 阅读 · 0 评论 -
leetcode21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。示例:输入:1->2->4, 1->3->4输出:1->1->2->3->4->4来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-two-sorted-lists...原创 2019-08-05 12:16:06 · 121 阅读 · 0 评论 -
牛客网:删除链表中重复节点
题目描述在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5class Solution {public: ListNode* deleteDuplication(ListNode* pHead) { ...原创 2019-08-05 12:43:50 · 198 阅读 · 0 评论 -
leetcode160相交链表
编写一个程序,找到两个单链表相交的起始节点。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; */int getlen(struct ListNode *head){ int l = 0; ...原创 2019-08-05 13:57:36 · 118 阅读 · 0 评论 -
leetcode141环形链表
给定一个链表,判断链表中是否有环。/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * }; *///快慢指针bool hasCycle(struct ListNode *head) { struct Lis...原创 2019-08-05 14:08:28 · 136 阅读 · 0 评论 -
栈、队列
栈: 先进后出#include<stdio.h>typedef struct Stack { int array[100]; int size;} Stack;//初始化void StackInit(Stack* s){ s->size = 0;}//销毁void StackDestroy(Stack* s){ s-&...原创 2019-08-05 15:18:04 · 131 阅读 · 0 评论 -
leetcode20:有效的括号(c语言和c++两种解法)
方法一:C语言bool isValid(char* s) { char a[100000] = { 0 }; int count = 0; while(*s) { switch(*s) { case '{': case '[': case '(':...原创 2019-08-06 21:46:02 · 411 阅读 · 0 评论 -
leetcode225:用队列实现栈
使用队列实现栈的下列操作: push(x) -- 元素 x 入栈 pop() -- 移除栈顶元素 top() -- 获取栈顶元素 empty() -- 返回栈是否为空注意: 你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。 你...原创 2019-08-06 21:46:32 · 196 阅读 · 0 评论 -
链表
链表的概念: 链表是一种物理存储结构上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针连接次序实现的。#include<stdio.h>#include<malloc.h>#include<assert.h>typedef int SlistDataType ;//定义链表中的节点的结构体typedef s...原创 2019-08-05 10:06:50 · 135 阅读 · 0 评论 -
结构体----------内存对齐
1.什么是内存对齐? 内存对齐”应该是编译器的“管辖范围”。编译器为程序中的每个“数据单元”安排在适当的位置上。但是C语言的一个特点就是太灵活,太强大,它允许你干预“内存对齐”。2.为什么存在内存对齐?1、平台原因(移植原因):不是所有的硬件平台都能访问任意地址上的任意数据的;某些硬件平台只能在某些地址处取某些特定类型的数据,否则抛出硬件异常。2、性...原创 2019-06-28 00:38:30 · 125 阅读 · 0 评论 -
指针
指针:指针是一个变量,这个变量是用来存放地址的,地址唯一标识一块内存空间。指针的大小是固定的4/8个字节(由平台决定,32位/64位)#include<stdio.h>#include<stdlib.h>int main(){ int a = 1; char b = 'a'; int arr[5] = { 0 }; int* p = &a...原创 2018-12-06 19:04:57 · 155 阅读 · 0 评论 -
字符指针
字符指针:char*字符指针的使用:#include<stdio.h>#include<stdlib.h>int main(){ char ch = 'a'; char* p = &ch; printf("%c\n", *p); system("pause"); return 0;}字符指针可以用来访问或者更改字符变量#include...原创 2018-12-06 19:39:06 · 194 阅读 · 0 评论 -
指针的初始化
有下面的代码 #include<stdio.h>#include<stdlib.h>int main(){ int* a; *a = 1; system("pause"); return 0;}我在这里声明创建了一个名为a的指针变量,然后把1赋值给a所指向的那块内存空间。编译结果如下:a未初始化,到底指向哪里根本我们不得而知。所以我们在进行赋值...原创 2018-12-06 20:13:37 · 14448 阅读 · 0 评论 -
C语言求最大公约数的三种方法
sadjksackjas原创 2019-05-27 08:51:15 · 3494 阅读 · 0 评论 -
C语言数据类型
数据类型,大小端数据类型名称64位系统下数据大小char字符数据类型1short短整型2int整形4long长整形8long long更长的整形8float单精度浮点数4double双精度浮点数8构造类型:数据类型结构体类型struct枚举类型enum联合体类型union指针类型、空类型:v原创 2019-06-22 02:00:01 · 104 阅读 · 0 评论 -
字符函数和字符串函数的使用和实现
strlen,strcpy,strcat,strcmp,strstr原创 2019-06-22 02:34:19 · 134 阅读 · 0 评论 -
C语言指针
指针是什么?指针是一个变量或者说是编程语言中的一个对象,存放内存单元的地址。“指针”的意思就是通过它能找到以它为地址的内存单元。指针是用来存放地址的,地址是唯一标志一块地址空间的。指针大小在32位平台下是4字节。在64位平台下是8字节的。指针和指针类型指针是有类型的,类型名为: 类型说明符*指针类型的定义:类型说明符(目标变量的类型) *(指针类型说明符) 指针变量名如...原创 2019-06-26 16:38:49 · 122 阅读 · 0 评论 -
结构体位段、枚举、联合体(共用体)
位段什么是位段? 位段,C语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”或称“位域”( bit field) 。利用位段能够用较少的位数存储数据。位段的声明 位段的声明和结构是类似的,有两个不同:位段的成员必须是 int、unsigned int、 signed int、char 整形家族。 位段的成员后面有一个冒号和数字...原创 2019-07-02 00:25:01 · 379 阅读 · 0 评论 -
数组指针、指针数组、函数指针、函数指针数组、指向函数指针数组的指针、回调函数
数组指针数组指针的定义:int (*p)[10];//p先和*结合,说明p是一个指针变量,然后指针指向一个大小为10个整形的数组。所以p是一个指针,指向一个数组,叫指针数组。//[]的优先级高于*号的,所以必须加上()来保证p和*先结合。&数组名和数组名:int arr[10];arr是数组名,也就是首元素的地址。而 &arr 表示的是数组的地址 ,而不是首元素的...原创 2019-06-26 22:57:24 · 190 阅读 · 0 评论 -
指针和数组笔试题解析
//一维数组#include<stdio.h>int main(){ int a[] = { 1,2,3,4 }; printf("%d\n", sizeof(a));//16 //求数组大小 printf("%d\n", sizeof(a + 0));//4 //求首元素地址大小 printf("%d\n", sizeof(*a));/...原创 2019-06-26 23:52:00 · 135 阅读 · 0 评论 -
结构体基础
结构体结构是一些值的集合,这些值称为成员变量。结构体的每个成员变量可以是不同类型的变量。结构体的声明1.一般声明struct tag//结构体类型名{ member-list;//成员列表 //.......}variable-list;//变量列表,全局变量2.特殊的声明//匿名的结构体类型,不完全的声明struct{ int a...原创 2019-06-27 23:12:01 · 217 阅读 · 0 评论 -
leetcode232:用栈实现队列
使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/implement-queue-using-stacks...原创 2019-08-06 21:46:14 · 228 阅读 · 0 评论