1、表元素逆序存储链表
代码:
#include<iostream>
using namespace std;
template <typename Object>
struct Node
{
Object data;
Node *next;
Node(const Object & d = Object{}, Node *n = nullptr) :data(d), next(n)
{}
};
template <typename Object>
Node<Object>*inverse(Node<Object>*head)
{
Node<Object> *a = head->next;//a指向第一个节点
Node<Object> *b;
head->next = NULL;
while (a != NULL)
{
b = a->next;//b指向a的下一个节点
a->next = head->next;//
head->next = a;//a反向连接head
a = b;//a指向原链表的下一个节点
}
return head->next;//重新指向头结节点,头节点的第一个节点指向head
}
int main()
{
typedef Node<int>node;
node *head = new node;
node *p, *q;
int n = 10;
p = head;
int v[10];
for (int i = 0; i < n; i++)
{
v[i] = i;
}
for (int i = 0; i < n; i++)
{
q = new node{ v[i],head };
p->next = q;
q-&