单向链表 双向链表

</pre><p>单向链表</p><p></p><p><pre class="cpp" name="code" snippet_file_name="blog_20150327_2_6786675" code_snippet_id="629209">#include "stdafx.h"
#include <iostream>

using namespace std;

typedef struct list
{
	int num;
	list *next1;
}listtest;

int _tmain(int argc, _TCHAR* argv[])
{
	listtest* head  = NULL;
	listtest* p = new listtest();
	listtest* q = new listtest();
	
	cin >> p->num;
	while (p->num != 0)
	{
		if (head == NULL)
		{
			head = q = p;
			p->next1 = NULL;
			p = new listtest();
			cin >> p->num;
		}
		else
		{
			q->next1 = p;
			q = p;
			p->next1 = NULL;
			p = new listtest();
			cin >> p->num;
		}
	}
	
	while (head)
	{
		cout << head->num << endl;
		head = head->next1;
	}
	return 0;
}


双向链表

// ConsoleApplication1.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>

using namespace std;

typedef struct list
{
	int num;
	list *next1;
	list *prev;
}listtest;

int _tmain(int argc, _TCHAR* argv[])
{
	listtest* head  = NULL;
	listtest* p = new listtest();
	listtest* q = new listtest();
	
	cin >> p->num;
	while (p->num != 0)
	{
		if (head == NULL)
		{
			head = q = p;
			p->next1 = NULL;
			p->prev = NULL;
			p = new listtest();
			cin >> p->num;
		}
		else
		{
			q->next1 = p;
			p->prev = q;
			q = p;
			p->next1 = NULL;
			p = new listtest();
			cin >> p->num;
		}
	}
	
	while (head)
	{
		cout << head->num << endl;
		head = head->next1;
	}
	return 0;
}



### Swift中单向链表的实现 在Swift中,单向链表可以通过定义一个`Node`类来表示链表中的节点。每个节点包含两个部分:存储的数据和指向下一个节点的指针。以下是一个简单的单向链表实现示例: ```swift class Node<T> { var value: T var next: Node<T>? init(value: T, next: Node<T>? = nil) { self.value = value self.next = next } } class SinglyLinkedList<T> { var head: Node<T>? var tail: Node<T>? init() {} // 插入节点到链表尾部 func append(value: T) { let newNode = Node(value: value) if let tailNode = tail { tailNode.next = newNode } else { head = newNode } tail = newNode } // 遍历链表并打印值 func printList() { var current = head while let node = current { print(node.value, terminator: " -> ") current = node.next } print("nil") } } ``` 上述代码定义了一个`Node`类用于存储数据和指向下一个节点的引用[^4]。同时,`SinglyLinkedList`类提供了插入节点和遍历链表的功能。 --- ### Swift中双向链表的实现 单向链表同,双向链表的每个节点除了包含指向下一个节点的指针外,还包含一个指向前一个节点的指针。以下是Swift中双向链表的实现示例: ```swift class DoublyNode<T> { var value: T var next: DoublyNode<T>? weak var previous: DoublyNode<T>? init(value: T) { self.value = value } } class DoublyLinkedList<T> { var head: DoublyNode<T>? var tail: DoublyNode<T>? init() {} // 插入节点到链表尾部 func append(value: T) { let newNode = DoublyNode(value: value) if let tailNode = tail { tailNode.next = newNode newNode.previous = tailNode } else { head = newNode } tail = newNode } // 遍历链表并打印值 func printList() { var current = head while let node = current { print(node.value, terminator: " <-> ") current = node.next } print("nil") } } ``` 这段代码定义了一个`DoublyNode`类,其中包含指向下一个节点的`next`指针和指向前一个节点的`previous`指针[^1]。此外,`DoublyLinkedList`类提供了插入节点和遍历链表的功能。 --- ### 示例用法 以下是使用上述单向链表双向链表的示例代码: ```swift // 单向链表示例 let singlyList = SinglyLinkedList<Int>() singlyList.append(value: 1) singlyList.append(value: 2) singlyList.append(value: 3) singlyList.printList() // 输出: 1 -> 2 -> 3 -> nil // 双向链表示例 let doublyList = DoublyLinkedList<String>() doublyList.append(value: "A") doublyList.append(value: "B") doublyList.append(value: "C") doublyList.printList() // 输出: A <-> B <-> C <-> nil ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值