#include<iostream>
using namespace std;
class list
{
public:
list(char a)
{
head = new node();
head->next = NULL;
}
list(int num)
{
//head = new node();
head = NULL;
}
void insert_node_head(int num);//表头头插声明
void insert_tail(int num);//不带表头尾插
void display();//带表头显示
void dis();//不带表头显示
void deleteh();
void delet();
private:
struct node
{
int num;
struct node *next;
};
node * head;
};
void list::insert_node_head(int num)
{
node * new_node = NULL;
node * p = head->next;
new_node = new node();
new_node->num = num;
//cout<<new_node->num<<endl;
new_node->next = p;
head->next = new_node;
}
void list::display()
{
node * p = NULL;
if(head == NULL)
{
cout<<"no link"<<endl;
}
else
{
p = head->next;
if(p == NULL)
{
cout<<"the link is empty"<<endl;
return;
}
else
{
while(p != NULL)
{
// printf("%d\n",p->num);
cout<<p->num<<endl;
p = p->next;
}
}
}
}
void list::insert_tail(int num)
{
node * p = NULL;
node * new_node = NULL;
new_node = new node();
new_node->num = num;
p = head;
if(head == NULL)
{
head = new_node;
new_node->next = NULL;
//cout<<"1"<<head->num<<endl;
}
else
{
while (p->next != NULL)
{
p = p->next;
}
p->next = new_node;
new_node->next = NULL;
}
}
void list::dis()
{
node * p = NULL;
p = head ;
if(p == NULL)
{
cout<<"the link is empty"<<endl;
return;
}
while(p != NULL)
{
cout<<p->num<<endl;
p = p->next;
}
}
void list::deleteh()
{
node* p =NULL;
p = head->next;
while(head->next != NULL)
{
p = head->next;
head->next = head->next->next;
delete p;
}
p = head;
if((head)->next == NULL)
{
delete p;
}
}
void list::delet()
{
node * p = NULL;
p = head;
while(head != NULL)
{
p = head;
head =(head)->next;
delete p;
}
}
int main()
{
//list List;
list d('a');//带表头
cout<<"带表头单链表"<<endl;
for(int i = 0; i < 10; i++)
{
d.insert_node_head(i);
}
d.display();
d.deleteh();
cout<<"不带表头单链表"<<endl;
list d1(1);//不带表头
for(int i = 1; i < 10; i++)
{
d1.insert_tail(i);
}
d1.dis();
d1.delet();
return 0 ;
}
C++单链表代表头和不带表头用构造函数初步实现
最新推荐文章于 2024-03-05 10:32:47 发布
本文介绍了如何使用C++编程语言来实现单链表,包括带头节点和不带头节点的构造函数。通过这两种方式,可以有效地创建和操作链表数据结构。
摘要由CSDN通过智能技术生成