创建一个带头结点的字符串
时间: 2023-09-02 10:08:56 浏览: 42
头结点是一个特殊的节点,它不存储任何数据,只是用来方便链表的操作。在创建一个带头结点的字符串时,可以先创建一个空的节点作为头结点,然后在它后面逐个添加字符节点。
以下是一个示例代码:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class String:
def __init__(self, s=''):
self.head = Node() # 创建一个空的头结点
p = self.head
for i in s:
p.next = Node(i) # 在头结点后面逐个添加字符节点
p = p.next
def __str__(self):
p = self.head.next
s = ''
while p:
s += p.data
p = p.next
return s
```
使用方法:
```python
s = String('hello world')
print(s) # 输出:hello world
```
相关问题
创建字符串采用带头结点的单链表存储
以下是用Python语言实现的创建字符串采用带头结点的单链表存储的代码:
```python
class Node:
def __init__(self, data=None):
self.data = data
self.next = None
class String:
def __init__(self):
self.head = Node() # 头结点
self.length = 0
def create(self, s):
for char in s:
node = Node(char)
node.next = self.head.next
self.head.next = node
self.length += 1
def print(self):
node = self.head.next
while node:
print(node.data, end='')
node = node.next
print()
# 示例代码
s = String()
s.create('hello')
s.print() # 输出:olleh
```
在代码中,`Node`类表示链表中的节点,包含一个`data`属性和一个`next`属性,分别表示节点的数据和指向下一个节点的指针。`String`类表示字符串,包含一个`head`属性和一个`length`属性,分别表示头结点和字符串的长度。其中,`head`属性是一个空节点,用于方便处理链表。`create()`方法接收一个字符串,遍历字符串中的每一个字符,创建一个新的节点并将其插入到链表的头部。`print()`方法用于打印链表中的所有字符。在示例代码中,我们创建了一个字符串对象`s`,调用`create()`方法创建了一个字符串`hello`,并调用`print()`方法打印了反转后的字符串`olleh`。
java如何创建不带头结点的单链表
在Java中创建不带头结点的单链表,可以按照以下步骤进行操作:
1. 创建一个Node类,用于表示链表的节点。该类包含两个成员变量:val表示节点的值,next表示指向下一个节点的引用。
2. 创建一个SingleLinkedList类,用于表示单链表。该类包含一个成员变量:head表示链表的头节点。
3. 在SingleLinkedList类中,定义一个add方法,用于在链表末尾添加节点。首先判断链表是否为空,如果为空,则将新节点作为头节点。如果链表不为空,则从头节点开始遍历到最后一个节点,将新节点添加到最后一个节点的next引用。
4. 在SingleLinkedList类中,定义一个toString方法,用于遍历链表并将节点的值按顺序输出。从头节点开始,依次将节点的值拼接成字符串,并使用"->"作为节点之间的分隔符,最后在字符串末尾添加"NULL"标记。
下面是使用Java创建不带头结点的单链表的示例代码:
```
//节点类
class Node {
int val;
Node next;
}
//单链表类
public class SingleLinkedList {
private Node head;
//在链表末尾添加节点
public void add(int val) {
Node newNode = new Node();
newNode.val = val;
if (head == null) {
head = newNode;
} else {
Node current = head;
while (current.next != null) {
current = current.next;
}
current.next = newNode;
}
}
//遍历链表并输出节点的值
public String toString() {
String ret = "";
Node current = head;
while (current != null) {
ret += current.val + "->";
current = current.next;
}
ret += "NULL";
return ret;
}
}
```