Node strct
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
正序
ListNode* CreateListNodesAsc(std::vector<int>& x)
{
ListNode *head=new ListNode;
ListNode *pre=head;
for(int i=0;i<x.size();i++)
{
ListNode *p=new ListNode(x[i]);
pre->next=p;
pre=p;
}
return head->next;
}
倒序
ListNode* CreateListNodesDesc(std::vector<int>& x)
{
ListNode *pre=new ListNode;
for(int i=0;i<x.size();i++)
{
if(i==0)
{
pre->val=x[i];
continue;
}
ListNode *p=new ListNode(x[i]);
p->next=pre;
pre=p;
}
return pre;
}
代码示例
#include <iostream>
#include <string>
#include <vector>
#include <unordered_set>
struct ListNode {
int val;
ListNode *next;
ListNode() : val(0), next(nullptr) {}
ListNode(int x) : val(x), next(nullptr) {}
ListNode(int x, ListNode *next) : val(x), next(next) {}
};
ListNode* CreateListNodesDesc(std::vector<int>& x);
ListNode* CreateListNodesAsc(std::vector<int>& x);
void ShowNodes(ListNode *p);
using namespace std;
int main()
{
vector<int> x1={1,2,4};
vector<int> x2={1,2,5,8};
ListNode *rx1=CreateListNodesAsc(x1);
ListNode *rx2=CreateListNodesDesc(x2);
ShowNodes(rx1);
cout<<"------------------------------"<<endl;
ShowNodes(rx2);
cout<<"------------------------------"<<endl;
string name;
cin>>name;
}
ListNode* CreateListNodesAsc(std::vector<int>& x)
{
ListNode *head=new ListNode;
ListNode *pre=head;
for(int i=0;i<x.size();i++)
{
ListNode *p=new ListNode(x[i]);
pre->next=p;
pre=p;
}
return head->next;
}
ListNode* CreateListNodesDesc(std::vector<int>& x)
{
ListNode *pre=new ListNode;
for(int i=0;i<x.size();i++)
{
if(i==0)
{
pre->val=x[i];
continue;
}
ListNode *p=new ListNode(x[i]);
p->next=pre;
pre=p;
}
return pre;
}
void ShowNodes(ListNode *p)
{
while(p!=nullptr)
{
cout<<p->val<<endl;
p=p->next;
}
}