void Create_link(),输入若干值,建立无头节点的单链表函数【C++】
时间: 2024-05-19 21:13:47 浏览: 111
#include <stdio.h>
#include <stdlib.h>
typedef struct Node {
int data;
struct Node *next;
} Node, *LinkList;
void Create_link(LinkList *L) {
Node *p, *q;
int x;
*L = NULL;
while (scanf("%d", &x) != EOF) {
p = (Node *) malloc(sizeof(Node));
p->data = x;
if (*L == NULL) {
*L = p;
} else {
q->next = p;
}
q = p;
}
q->next = NULL;
}
int main() {
LinkList L;
Create_link(&L);
return 0;
}
相关问题
void Create_link(),输入若干值,建立无头节点的单链表函数
下面是一个示例代码,可以输入若干值并建立无头节点的单链表:
```c++
#include <iostream>
using namespace std;
struct Node {
int val;
Node *next;
};
void Create_link(Node *&head) {
head = nullptr;
Node *tail = nullptr;
int x;
while (cin >> x) {
Node *new_node = new Node;
new_node->val = x;
new_node->next = nullptr;
if (head == nullptr) {
head = new_node;
tail = new_node;
} else {
tail->next = new_node;
tail = new_node;
}
}
}
void Print_link(Node *head) {
Node *cur = head;
while (cur != nullptr) {
cout << cur->val << " ";
cur = cur->next;
}
cout << endl;
}
int main() {
Node *head;
Create_link(head);
Print_link(head);
return 0;
}
```
在这个示例代码中,Create_link 函数使用了一个 while 循环,可以不断输入值,建立链表。当输入完所有的值后,循环结束,链表建立完成。
注意,在这个示例代码中,我们使用了一个 tail 指针,记录链表的尾节点,这样可以方便地在链表尾部插入新节点。
同时,我们也定义了一个 Print_link 函数,用于打印链表的所有节点值,验证链表建立是否正确。
在 main 函数中,我们先定义了一个 head 指针,然后调用 Create_link 函数建立链表,并使用 Print_link 函数打印链表。
ros 包名 c++节点
在ROS中,C++节点的包名通常是由多个单词组成的,每个单词以小写字母开头,单词之间用下划线连接。例如,一个名为“my_node”的节点可能属于一个名为“my_package”的包,因此它的完整名称将是“my_package/my_node”。
创建一个C++节点的步骤如下:
1. 创建一个ROS软件包,使用catkin_create_pkg或者手动创建。
2. 在包的src目录下创建一个.cpp源文件,并在CMakeLists.txt中添加对该文件的编译。
3. 在.cpp文件中编写节点的代码,包括节点的初始化、回调函数和主循环等。
4. 在CMakeLists.txt中添加节点的编译和链接信息。
5. 在package.xml中添加节点的描述信息,包括节点名称、作者、版本号等。
6. 使用catkin_make编译整个软件包,生成可执行文件。
7. 运行节点,使用rosrun命令或者在launch文件中启动。
下面是一个示例的C++节点代码:
```cpp
#include <ros/ros.h>
#include <std_msgs/String.h>
void callback(const std_msgs::String::ConstPtr& msg) {
ROS_INFO("I heard: [%s]", msg->data.c_str());
}
int main(int argc, char** argv) {
ros::init(argc, argv, "my_node");
ros::NodeHandle nh;
ros::Subscriber sub = nh.subscribe("my_topic", 10, callback);
ros::spin();
return 0;
}
```
在这个例子中,节点名称为“my_node”,订阅了一个名为“my_topic”的主题,并在收到消息时调用回调函数“callback”。要编译这个节点,需要在CMakeLists.txt中添加以下内容:
```cmake
add_executable(my_node src/my_node.cpp)
target_link_libraries(my_node ${catkin_LIBRARIES})
```
然后使用catkin_make命令来编译整个软件包。
阅读全文