头插法建立带头节点链表
void Createhead(linklist& l)//头插法带头节点
{
l = new list;
linklist p ;
l->next = NULL;
cout << "输入链表长度:"<<endl;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = l->next;
l->next = p;
}
}
尾插法建立带头节点链表
void Createrear(linklist& l)//尾插法
{
l = new list;
linklist p,r;
l->next = NULL;
r = l;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
头插法建立不带头节点链表
void Createlist1(linklist& l)//头插法不带头节点
{
l = new list;
linklist p;
l->next = NULL;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
cin >> l->data;
for (int i = 1; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = l;
l = p;
}
}
尾插法建立不带头节点链表
void Createlist2(linklist& l)//尾插法不带头节点
{
l = new list;
linklist p,q;
l->next = NULL;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
cin >> l->data;
q = l;
for (int i = 1; i < n; i++)
{
p = new list;
cin >> p->data;
q->next = p;
q = p;
}
}
完整代码:
#include<iostream>
using namespace std;
typedef struct list
{
int data;
list* next;
}list, * linklist;
void Createhead(linklist& l)//头插法带头节点
{
l = new list;
linklist p ;
l->next = NULL;
cout << "输入链表长度:"<<endl;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = l->next;
l->next = p;
}
}
void Createrear(linklist& l)//尾插法
{
l = new list;
linklist p,r;
l->next = NULL;
r = l;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
for (int i = 0; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = NULL;
r->next = p;
r = p;
}
}
void Createlist1(linklist& l)//头插法不带头节点
{
l = new list;
linklist p;
l->next = NULL;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
cin >> l->data;
for (int i = 1; i < n; i++)
{
p = new list;
cin >> p->data;
p->next = l;
l = p;
}
}
void Createlist2(linklist& l)//尾插法不带头节点
{
l = new list;
linklist p,q;
l->next = NULL;
cout << "输入链表长度:" << endl;
int n;
cin >> n;
cin >> l->data;
q = l;
for (int i = 1; i < n; i++)
{
p = new list;
cin >> p->data;
q->next = p;
q = p;
}
}
void Printlist1(linklist l)
{
linklist p = l->next;
while (p!=NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
void Printlist2(linklist l)
{
linklist p = l;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
int main()
{
linklist L1,L2,L3,L4;
cout << "头插法(带头节点)建立链表:" << endl;
Createhead(L1);
cout << "尾插法(带头节点)建立链表:" << endl;
Createrear(L2);
cout << "头插法(带头节点)链表:" << endl;
Printlist1(L1);
cout << "尾插法(带头节点)链表:" << endl;
Printlist1(L2);
cout << "头插法(不带头节点)建立链表:" << endl;
Createlist1(L3);
cout << "尾插法(不带头节点)建立链表:" << endl;
Createlist2(L4);
cout << "头插法(不带头节点)链表:" << endl;
Printlist2(L3);
cout << "尾插法(不带头节点)链表:" << endl;
Printlist2(L4);
}