力扣基于核心代码模式,一些数据结构老是拿来就用,都快忘了怎么构造链表了。今天无聊写一下构造链表的程序,力求最简。
题目1:根据输入数组,构造一个双向链表。
代码:
struct node{
int val;
node *left;
node *right;
node(int x):val(x),left(NULL),right(NULL){}
};
int main()
{
int n;
cin >> n;
vector<int> num;
while(n--)
{
int tmp;
cin >> tmp;
num.push_back(tmp);
}
node * head= new node(num[0]);
node *pre = head;
for(int i=1;i<num.size();i++)
{
node *aft = new node(num[i]);
pre->right = aft;
aft->left = pre;
pre = aft;
}
for(int i=0;i<num.size();i++)
{
cout << head->val;
head = head->right;
}
}
题目2:根据输入数组,构造单向环形链表
struct node{
int val;
node *next;
node(int x):val(x),next(NULL){}
};
int main()
{
int n;
cin >> n;
vector<int> num;
while(n--)
{
int tmp;
cin >> tmp;
num.push_back(tmp);
}
node * head= new node(num[0]);
node *pre = head;
for(int i=1;i<num.size();i++)
{
node *aft = new node(num[i]);
pre->next = aft;
pre = aft;
}
pre->next=NULL;
while(head)
{
cout << head->val;
head = head->next;
}
}