![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构基础
wooo……小老弟!
作为一个菜鸟,没有资格眼高手低。
展开
-
将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中不允许有重复的数据。
逼话少说,上代码!#include <stdio.h>#include <stdlib.h>#include <malloc.h>const int TRUE = 1;const int FALSE = 0;typedef int Status;typedef struct node{ int data; node* next;}...原创 2019-04-13 17:14:37 · 6889 阅读 · 3 评论 -
设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。算法应对异常情况(入栈满等)给出相应的
1.mian.cpp文件内容:#include <iostream>#include <stdlib.h>#include "GlobalDefine.h"#include "LinkList.h"#include "Stack.h"using namespace std;int main(){ //Page85.2.(3) int input...原创 2019-06-02 20:35:35 · 17380 阅读 · 0 评论 -
设计算法将一个带头结点的单链表A分解为两个具有相同结构的链表B、C,其中B表的结点为A表中值小于零的结点,而C表的结点为A表中值大于零的结点(链表A中的元素为非零整数,要求B、C表利用A表的结点)。
void Divid_Link_Liist(LinkList &L1, LinkList &L2, LinkList &L3){ /* function:将链表L1按元素的正负分为L2和L3两个链表 参数说明:L1为待分解的链表,L2为负数构成的链表的头结点,L3为正数构成的链表的头结点 */ LNode *p1, *p2, *p3; p1 = L1-...原创 2019-06-01 20:36:13 · 9192 阅读 · 0 评论 -
P53.2.(3)将两个递增的有序链表合并为一个递增的有序链表。要求结果链表仍使用原来两个链表的存储空间, 不另外占用其它的存储空间。表中不允许有重复的数据。
一把辛酸泪啊。。。。。。本人之前用的是DEVC++,可能是本人太菜,把这个编译器给整出问题了,一直给我报错,我就把它给卸载了,满以为换上了宇宙第一IDE就会过上幸福快乐的生活,没想到是噩梦的开始。。。。。。。可能是本人太菜用VS2010时非常的刺手,一开始写hello world给我各种报错,我就去找错误源,我的天。。。。。兼容性、语言标准、编译头。。。。。后面写好程序后找bug,我晕哟你给我报的...原创 2019-06-01 10:18:36 · 9890 阅读 · 0 评论 -
编写算法,实现下面函数的功能。函数void insert(char *s, char *t, int pos)将字符串t插入到字符串s中,插入位置为pos。假设分配给字符串s的空间足够让字符串t插入
void Insert(char *s, char *t, int pos)//将字符串t插入到字符串s的pos位置中,pos最小值为0{ int i,j, len_s,len_t, move_len; char *ptr, *ptr_s; i = 0; j = 0; len_s = 0; len_t = 0; for(ptr = s; *ptr != '\0'; ptr+...原创 2019-06-27 16:23:38 · 5140 阅读 · 0 评论 -
设计一个算法,删除递增有序链表中值大于mink且小于maxk的所有元素(mink和maxk是给定的两个参数,其值可以和表中的元素相同或不同)
void Delete_Some_Num(LinkList &s, int min, int max){ LNode *p, *q, *p_front, *temp; //p_front用于记录p前面的节点位置 p = s -> next; p_front = s; while(p && p -> data <= min)//p最终指向第一...原创 2019-06-12 18:20:19 · 6520 阅读 · 0 评论 -
P109.3.(1)写一个算法统计在输入字符串中各个不同字符出现的频度并将结果存入文件(字符串的合法字符为A~Z这26个字母和0~9这10个数字)
#include <iostream>#include <stdlib.h>using namespace std;int main(){ int times[36]; char ch; int num; for(int i = 0; i < 36; i++) { times[i] = 0; } cout<<"请输入字符"&...原创 2019-06-05 17:11:14 · 18052 阅读 · 3 评论 -
写一个递归算法,实现字符串逆序存储,要求不另设串存储空间
#include <stdio.h>void ReverseStorage(char *ch){ if(!*ch) { return; } ReverseStorage(ch + 1); printf("%c", *ch);}int main(){ char str[20]; gets(str); ReverseStorage(str);}...原创 2019-05-10 19:42:48 · 2806 阅读 · 3 评论 -
P85.2.(2)回文是指正读反读均相同的字符序列,如“abba”和“abdba”均是回文,但“good”不是回文。试写一个算法判定给定的字符序列是否是回文。(提示:将一半的字符入栈)(C语言描述)
做这个题时遇到个bug,即main()中的第一句,我定义了指针str_input用来装输入的字符串,但是后面赋值操作却用了get(),如果要用get()读入字符串的话就应该将str_input定义为数组,编译时没有报错,但运行时出错。我调试的时候一直以为bug在IsPlalindrome()里面,耽误了很久的时间。基础知识不够牢固啊!#include <stdio.h>#in...原创 2019-05-09 21:03:09 · 20722 阅读 · 7 评论 -
双栈操作的函数
#include <stdio.h>const int TRUE = 1;const int FALSE = 0;typedef int SElementType;typedef struct{ int top[2]; int bottom[2]; SElementType *v; int arr_len;}DbStack;int StackInit(Db...原创 2019-05-08 21:07:37 · 262 阅读 · 0 评论 -
KMP算法(C语言实现)
KMP算法,详细讲解可参考视频:https://www.bilibili.com/video/av3246487?from=search&seid=15034383192931240426我认为 KMP算法中最重要的便是理解next数组,理解为何它就减少了计算量。建议在看视频的过程中手算next数组,然后再写代码。程序说明:如果主串包含了模式串则打印:匹配成功,反之:匹配失败。...原创 2019-05-03 20:20:36 · 1649 阅读 · 0 评论 -
将两个非递减的有序链表合并为一个非递增的有序链表。要求结果链表仍使用原来两个链表的存储空间,不另外占用其他的存储空间。表中允许有重复的数据。
如有错误的地方还请斧正emm.....涉及到的重要知识点:引用:void Creat_LinkList(LinkList &L, int len);和void Decrease_LinkList(LinkList &L1, LinkList &L2)都涉及到一个点:“引用”第一个函数的参数LinkList &L有必要说明一下,在链表操作中经常在函数参...原创 2019-04-18 21:23:29 · 7553 阅读 · 1 评论 -
P147.3.(2)判断两棵树是否相等
核心语句为最后一句:(T1 -> data == T2 -> data)判断了当前节点的值是否相等;Is_Same_Tree(T1 -> lchild, T2 -> lchild) && Is_Same_Tree(T1 -> rchild, T2 -> rchild)左右子树递归;只要其中一个条件返回值为0则最终的返回值也为0;(这条语句不是我想...原创 2019-06-27 16:22:39 · 233 阅读 · 0 评论