C语言
琴弦上的放歌者
这个作者很懒,什么都没留下…
展开
-
单链表实现简单选择排序
递增有序每次从原链表中找出一个最大(最小)元素,然后头插(尾插)到结果链表中。递减有序每次从原链表中找出一个最小(最大)元素,然后头插(尾插)到结果链表中。原创 2022-07-29 11:49:21 · 4470 阅读 · 2 评论 -
将数组元素按负数、零、正数的顺序排好
设立三个指针i,j,k。其中,j代表工作指针,表示当前扫描到的元素,i以前的元素全部为负数,k之后的元素全部为正数。③如果A[j]>0,那么A[j]和A[k]交换。②如果A[j]==0,那么不交换,j++即可;①如果A[j]...原创 2022-07-28 15:44:50 · 524 阅读 · 0 评论 -
给定元素值,交换链表中等于该元素值的结点及其前驱结点(仅考虑有一个结点元素值与给定元素值相同)
我们用r指针用来寻找与所需交换的元素值相等的结点,q指针指向r指针指向的结点的前驱,p指针指向q指针指向的结点的前驱,之后逐渐后移三个指针即可。原创 2022-07-25 17:52:45 · 237 阅读 · 0 评论 -
不带头结点建立单链表(头插法、尾插法)
#include<iostream>using namespace std;#include<stdlib.h>typedef int ElemType;typedef struct LNode{//定义单链表结点类型 ElemType data;//数据域 struct LNode *next;//指针域}LNode,*LinkList;//单链表打印输出void LinkListPrint(LinkList L){ LNode *p = L原创 2022-04-11 11:21:01 · 5403 阅读 · 2 评论 -
一维数组A[m + n]中两个线性表(a1,a2,a3,……,am)和(b1,b2,b3,……,bn)位置互换
题目描述:已知在一维数组A[m + n]中依次存放两个线性表(a1,a2,a3,……,am)和(b1,b2,b3,……,bn)。试编写一个函数,将数组中两个顺序表的位置互换,即将(b1,b2,b3,……,bn)放在(a1,a2,a3,……,am)的前面。算法思想①先把(a1,a2,a3,……,am)逆序为(am,……,a3,a2,a1);②再把(b1,b2,b3,……,bn)逆序为(bn,……,b3,b2,b1);③此时数组变为了(am,……,a3,a2,a1, bn,……,b3,b2,b1),观察原创 2022-04-02 16:25:59 · 2310 阅读 · 0 评论 -
双指针法找出两个单链表的第一个公共结点
问题描述:拓展:首先要明白什么是公共结点:两个链表有公共结点,即两个链表从某一结点开始,它们的next都指向同一个结点。由于每个单链表结点只有一个next域,因此从第一个公共结点开始,之后它们所有的结点都是重合的,不可能再出现分叉,若出现了分叉,则就与单链表每个结点只有一个next域矛盾了。所以两个有公共结点而部分重合的单链表,形状看起来像Y,而不可能像X。算法思路:假设两个单链表A、B的公共部分长度为c,A除去公共部分的长度为a,B除去公共部分的长度为b。情况一:A、B有公共结点,则a+c+b原创 2021-10-25 10:52:07 · 158 阅读 · 0 评论 -
借助辅助数组实现单链表元素递增有序输出
算法思路:先将链表中的数据复制到数组中,再采用快速排序算法(时间复杂度为O(nlog2n)进行排序,然后将数组元素依次插入到链表中,以空间换时间。#include<stdio.h>#include<stdlib.h> typedef int ElemType; typedef struct LNode{//单链表结点结构体类型 ElemType data;//数据域 struct LNode *next;//指针域 }LNode,*LinkList;//尾原创 2021-10-24 14:44:59 · 555 阅读 · 0 评论 -
查找数组中的主元并输出
查找数组中的主元并输出题目来源:王道考研数据结构辅导书线性表顺序表示大题第12题(2013统考真题)题目描述:说明:参考了王道课后题视频讲解的思路实现了代码,我采用的是容易想到的算法中的第一种(最优算法我想不到),感谢王道,这种思路做一道题类似的就都会做了,加油。算法思路:因为本题中说了数组中的元素大小都大于0且小于n,则暗示我们可以创建一个和数组A大小相同的辅助数组B,以空间换时间,这样可以保证时间复杂度更低。代码实现:#include<stdio.h>#include原创 2021-10-20 14:30:06 · 106 阅读 · 0 评论 -
交换两个字符串值
交换两个字符串值题目:编写程序,利用指针传递参数,实现两个字符串值的交换。输入:从键盘随机输入两个字符串值,第一行是第一个字符串值,第二行是第二个字符串值。输出:交换后两个字符串的值。样例:输入: 1234567abcdefghijk输出: abcdefghijk1234567代码如下:#define _CRT_SECURE_NO_WARNINGS#include <s...原创 2019-12-14 19:20:39 · 4466 阅读 · 2 评论 -
二分查找法
二分查找法非递归int binarysearch(int a[], int n, int key){ int low, high, mid; low = 0; high = n - 1; while (low <= high) { mid = low + (high - low) / 2;/*使用 (low + high) / 2 会有整数溢出的问题(问题会出现在当l...原创 2019-12-06 13:37:48 · 123 阅读 · 0 评论 -
C语言常用格式字符
C语言常用格式字符%d 十进制有符号整数%c 单个字符%s 输出字符串%e 以“科学记数法”的形式输出十进制的浮点数 如2.451e+02%f 输出十进制浮点数,不带域宽时,保留6位小数注意:输入时,float对应%f,double对应%lf,输出时float和double都对应%f.%g 以%f%e中较短的输出宽度输出单、双精度实数,%e格式在指数小于-4或者大于等于精度时使用,不...原创 2019-12-01 14:12:04 · 1165 阅读 · 0 评论