- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
【题目】
已知两个链表A和链表B分别表示两个集合,其元素递增排列。请设计一个算法用于求出A和B的交集,并存放到A链表中。
【思路分析】
1、定义两个指针a、b分别指向链表A和链表B的首元结点 和一个int类型的i变量用于记录要插入结点的位置
2、当a指向结点的data小于b指向的结点的data,a向后移动一个结点并且删除之前指向的结点
3、当a指针指向的data大于b指向的结点的data,b向后移动一个结点
4、当a指向的结点data等于b指向的结点data,就让a、b指针都向后移动一个结点并且将i++
5、如果a先指向NULL就直接退出循环,如果b先指向NULL就将a->next = NULL
【代码实现】
/**
* 求链表A和链表B的交集 并存放在链表A中
* @param A 链表A其元素递增
* @param B 链表B其元素递增
* @return
*/
Status JiaoSet(LinkList &A,LinkList B){
int i=1;
LNode* a = A->next;
LNode* b = B->next;
while (a && b){
if (a->data.no < b->data.no){
a = a->next;
ListDelete(A,i);
}else if (a->data.no > b->data.no) b=b->next;
if(a && a->data.no == b->data.no){
if (b->next == NULL){
a->next = NULL;
break;
}else{
a = a->next;
b = b->next;
}
i++;
}
}
return OK;
}
/**
* 按照位置删除结点
* @param L 链表
* @param i 要删除结点的位置
* @return
*/
Status ListDelete(LinkList &L,int i){
LinkList p = L;
int j = 0;
while (p && j<i-1){
p = p->next;
j++;
}
if(!p || j>i-1){
return ERROR;
}
LNode *q = p->next;
p->next = q->next;
delete q;
return OK;
}
【头文件及主方法】
#include <iostream>
#include <string>
#define OK 1
#define ERROR 0
using namespace std;
typedef int Status;
struct ElemType{
int no;
string name;
};
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
/*初始化*/
Status InitList(LinkList &L){
L = new LNode;
L->next = NULL;
return OK;
}
/*尾插法*/
void CreateList_R(LinkList &L, int n){
L = new LNode;
L->next = NULL;//建立带头结点的空链表
LNode *r = L;
for (int i = 0; i < n; ++i) {
LNode* p = new LNode;
cout<<"输入学号和姓名以添加结点,用空格分隔"<<endl;
cin>>p->data.no>>p->data.name;
p->next = NULL;
r->next = p;
r = p;
}
}
int main(){
LNode *L1;
LNode *L2;
InitList(L1);
InitList(L2);
CreateList_R(L1,5);
cout<<"第二条链表"<<endl;
CreateList_R(L2,3);
JiaoSet(L1,L2);
Show(L1);
}
【题目】
已知两个链表A和B分别表示两个集合,其元素递增排列。请设计算法求出两个集合A和B的差集(即仅有在A中出现而不在B中出现的元素构成的集合),并以同样的形式存储,同时返回该集合的元素个数。
【思路分析】
1、定义两个指针a、b分别指向链表A和链表B的首元结点 和一个int类型的i变量用于记录要插入结点的位置
2、当a指向结点的data小于b指向的结点的data,a向后移动一个结点并且i++
3、当a指针指向的data大于b指向的结点的data,b向后移动一个结点
4、当a指向的结点data等于b指向的结点data,就让a、b指针都向后移动一个结点并且删除a指针之前指向的结点
5、a或b指针只要有一个指向NULL就退出循环
【代码实现】
/**
* 求链表A和链表B的差集(A中出现而不在B中出现)
* @param A 链表A 其元素递增
* @param B 链表B 其元素递增
* @return 返回差集的链表的长度
*/
Status ChaSet(LinkList &A,LinkList B){
int i=1;
LNode* a = A->next;
LNode* b = B->next;
while (a && b){
if (a->data.no < b->data.no){
a = a->next;
i++;
}else if (a->data.no > b->data.no) b=b->next;
if (b == NULL || a == NULL) break;
if(a->data.no == b->data.no){
a = a->next;
b = b->next;
ListDelete(A,i); //ListDelete()函数实现在上一题代码中
}
}
return Length(A);
}
//求链表中元素的个数
int Length(LinkList L){
int count = 0;
LNode* p = L->next;
if (!p)
return 0;
while (p){
count++;
p = p->next;
}
return count;
}
【头文件及主方法】
#include <iostream>
#include <string>
#define OK 1
#define ERROR 0
using namespace std;
typedef int Status;
struct ElemType{
int no;
string name;
};
typedef struct LNode{
ElemType data;
struct LNode *next;
}LNode,*LinkList;
int main(){
LNode *L1;
LNode *L2;
InitList(L1);
InitList(L2);
CreateList_R(L1,5);
cout<<"第二条链表"<<endl;
CreateList_R(L2,3);
int length = ChaSet(L1,L2);
Show(L1);
cout<<endl<<"差集长度:"<<length;
}
【题目】
已知两个链表A和链表B分别表示两个集合,其元素递增排列。请设计一个算法用于求出A和B的交集,并存放到A链表中。
【代码实现】
/**
* 求A和B链表的并集 并存放在A中
* @param A 链表A 其元素递增排序
* @param B 链表B 其元素递增排序
*/
Status UnionSet(LinkList &A,LinkList B){
int i=1;
LNode* a = A->next;
LNode* b = B->next;
while (a && b){
if (a->data.no >= b->data.no){
ElemType e = {b->data.no,b->data.name};
InsertByLocation(A,i,e);
i++;
b = b->next;
}
else if (b->data.no > a->data.no) {
a = a->next;
i++;
}
}
return OK;
}
/**
* 根据位置插入结点
* @param i 插入结点的位置
* @param e 要插入的结点
*/
Status InsertByLocation(LinkList &L,int i,ElemType e){
LinkList p = L;
int j = 0;
while (p && j<i-1){
p = p->next;
j++;
}
if (!p || j>i-1)
return ERROR;
/*插入结点*/
LNode* s = new LNode;
s->data = e;
s->next = p->next;
p->next = s;
return OK;
}
关闭。这个问题需要更多focused .它目前不接受答案。 想改善这个问题吗?更新问题,使其仅关注一个问题 editing this post . 4年前关闭。 Improve this questi
.NET 框架:4.5.1 我在 Blend for visual studio 2015 中遇到一个奇怪的错误,我找不到它的来源。 如果我在 VS 中打开我的 WPF 解决方案,它会加载并运行良好。
我经常遇到这样的问题,与 Hierarchical RESTful URL design 非常相似 假设该服务仅提供用户上传文档。 POST, GET /accounts PUT, DELETE /a
在 Rails 应用程序中,我使用 devise 来管理我的用户,而我用来销毁 session 的链接不再有效。它正在工作,现在我添加了事件管理员,但没有。 我的链接是 :delete, :clas
我已经坚持了超过 24 小时,试图按照此处发布的其他解决方案进行操作,但我无法使其正常工作。我是 Rails 新手,需要帮助! 我想让我的/users/edit 页面正常工作,以便我可以简单地更改用户
Devise 在以下情况下不会使用户超时: 用户登录,关闭选项卡,然后在超时 + X 分钟内重新访问该 URL。用户仍处于登录状态。 如果选项卡已打开并且稍后刷新/单击,则超时可以正常工作。这意味着
我想使用这样的 slider 我希望该 slider 根据提供给它的值进行相应调整。到目前为止,我只能应用具有渐变效果的背景,但无法获得这种效果。请通过提供样式代码来帮助我。
您应该为每种方法创建一个请求/响应对象,还是应该为每个服务创建一个? 如果我在所有方法中使用它,我的服务请求对象中将只有 5 个不同的东西,因为我对几乎所有方法使用相同的输入。 响应对象将只有一个字典
我正在尝试在 REST 中对实体的附件进行建模。假设一个缺陷实体可以附加多个附件。每个附件都有描述和一些其他属性(上次修改时间、文件大小...)。附件本身是任何格式的文件(jpeg、doc ...)
我有以下表格: Blogs { BlogName } BlogPosts { BlogName, PostTitle } 博客文章同时建模一个实体和一个关系,根据 6nf(根据第三个宣言)这是无效的。
如果 A 类与 B、C 和 D 类中的每一个都有唯一的交互,那么交互的代码应该在 A 中还是在 B、C 和 D 中? 我正在编写一个小游戏,其中许多对象可以与其他对象进行独特的交互。例如,EMP点击
关于如何记住我与 Omniauth 一起工作似乎有些困惑。 根据这个wiki ,您需要在 OmniauthCallbacksController 中包含以下内容: remember_me(user)
设计问题: 使用 非线程安全 组件(集合,API,...)在/带有 多线程成分 ... 例子 : 组件 1 :多线程套接字服务器谁向消息处理程序发送消息... 组件 2 :非线程安全 消息处理程序 谁
我们目前正在设计一个 RESTful 应用程序。我们决定使用 XML 作为我们的基本表示。 我有以下关于在 XML 中设计/建模应用程序数据的问题。 在 XML 中进行数据建模的方法有哪些?从头开始然
我正在设计一个新的 XSD 来从业务合作伙伴那里获取积分信息。对于每笔交易,合作伙伴必须提供至少一种积分类型的积分值。我有以下几点:
设计支持多个版本的 API 的最佳方法是什么。我如何确保即使我的数据架构发生更改(微小更改),我的 api 的使用者也不会受到影响?任何引用架构、指南都非常有用。 最佳答案 Mark Nottingh
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 4 年前。 Improv
我想用 php 创建一个网站,其工作方式与 https://www.bitcoins.lc/ 相同。确实,就每个页面上具有相同布局但内容会随着您更改链接/页面而改变而言,我如何在 php 中使用lay
我有一个关于编写 Swing UI 的问题。如果我想制作一个带有某些选项的软件,例如在第一个框架上,我有三个按钮(新建、选项、退出)。 现在,如果用户单击新按钮,我想将框架中的整个内容更改为其他内容。
我正在尝试找出并学习将应用程序拥有的一堆Docker容器移至Kubernetes的模式和最佳实践。诸如Pod设计,服务,部署之类的东西。例如,我可以创建一个其中包含单个Web和应用程序容器的Pod,但
我是一名优秀的程序员,十分优秀!