定义结点类型的类 数据域为整形
时间: 2024-05-09 21:16:36 浏览: 8
可以这样定义一个结点类型的类,其数据域为整型:
```python
class Node:
def __init__(self, val):
self.val = val
self.next = None
```
其中,`val` 表示整型数据域,`next` 表示指向下一个结点的指针。
相关问题
定义结点类型的类class node,数据域为整形,并定义单链表类class slist, 在slist中实现正向和反向插入结点的功能、州除结点功能和输出链表所有成员数据域的功能,在主两数中测试结点插入功能,建立单向链表,输出单 向链表和州除所有结点,然后再输出所有结点。
以下是实现上述功能的代码:
```cpp
#include <iostream>
using namespace std;
class node{
public:
int data;
node* next;
node(int d): data(d), next(nullptr) {}
};
class slist{
public:
slist(): head(nullptr) {}
void insertFront(int d){
node* newNode = new node(d);
newNode->next = head;
head = newNode;
}
void insertBack(int d){
node* newNode = new node(d);
if(head == nullptr){
head = newNode;
}
else{
node* curr = head;
while(curr->next != nullptr){
curr = curr->next;
}
curr->next = newNode;
}
}
bool remove(int d){
if(head == nullptr){
return false;
}
if(head->data == d){
node* temp = head;
head = head->next;
delete temp;
return true;
}
node* curr = head;
while(curr->next != nullptr && curr->next->data != d){
curr = curr->next;
}
if(curr->next == nullptr){
return false;
}
node* temp = curr->next;
curr->next = curr->next->next;
delete temp;
return true;
}
void print(){
node* curr = head;
while(curr != nullptr){
cout << curr->data << " ";
curr = curr->next;
}
cout << endl;
}
void printReverse(){
printReverseHelper(head);
cout << endl;
}
private:
node* head;
void printReverseHelper(node* curr){
if(curr == nullptr){
return;
}
printReverseHelper(curr->next);
cout << curr->data << " ";
}
};
int main(){
slist list;
list.insertFront(3);
list.insertFront(2);
list.insertFront(1);
list.print(); // output: 1 2 3
list.insertBack(4);
list.print(); // output: 1 2 3 4
list.remove(2);
list.print(); // output: 1 3 4
list.printReverse(); // output: 4 3 1
return 0;
}
```
在上述代码中,我们实现了单链表类 `slist`,其中包含了正向插入结点的函数 `insertFront`,反向插入结点的函数 `insertBack`,州除结点的函数 `remove`,输出链表所有成员数据域的函数 `print`,以及输出链表所有成员数据域的反向顺序的函数 `printReverse`。在主函数中,我们测试了这些函数的功能,并且最终输出了链表所有成员数据域的反向顺序。
使用c语言,定义结点类型,创建链表遍历链表。
以下是使用C语言定义链表的示例代码:
```c
#include <stdio.h>
#include <stdlib.h>
// 链表结点类型定义
typedef struct ListNode {
int data; // 数据域
struct ListNode* next; // 指针域
} ListNode;
// 创建链表
ListNode* createList(int* arr, int size) {
if (size == 0) {
return NULL;
}
ListNode* head = (ListNode*)malloc(sizeof(ListNode));
head->data = arr[0];
head->next = NULL;
ListNode* tail = head;
for (int i = 1; i < size; i++) {
ListNode* node = (ListNode*)malloc(sizeof(ListNode));
node->data = arr[i];
node->next = NULL;
tail->next = node;
tail = node;
}
return head;
}
// 遍历链表
void traverseList(ListNode* head) {
ListNode* node = head;
while (node != NULL) {
printf("%d ", node->data);
node = node->next;
}
printf("\n");
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(int);
ListNode* head = createList(arr, size);
traverseList(head);
return 0;
}
```
在上面的代码中,我们首先定义了一个链表结点类型 `ListNode`,其包含一个整型数据域 `data` 和一个指向下一个结点的指针域 `next`。
接着,我们实现了一个 `createList` 函数来创建链表。该函数接受一个整型数组和其大小作为参数,返回一个链表的头指针。在函数中,我们首先创建头结点,并将其设置为数组的第一个元素。然后我们遍历数组中的元素,创建新的结点,并将其插入到链表的尾部。
最后,我们实现了一个 `traverseList` 函数来遍历链表。该函数接受一个链表的头指针作为参数,并输出链表中的每个元素。
在 `main` 函数中,我们先定义一个整型数组 `arr`,然后调用 `createList` 函数来创建链表,并将其头指针保存在 `head` 变量中。最后,我们调用 `traverseList` 函数来遍历并输出链表中的元素。