感想
链表这玩意儿呢,我jio得吧其实就是会者不难难者不会,还记得大一刚刚学链表的时候极度痛苦,搞了好几天才能勉强编出来,昨天老师布置让用c++写一个单链表,刚开始还有点犹豫怕写不出来,没想到竟是信手拈来hhh。
源码
#include <iostream>
using namespace std;
class node
{
public:u
int value;
node* next;
int get(int a)
{
return a;
}
};
node* head = NULL;
class link
{
public:
void creat();//创建链表
void push();//插入元素
void pop();//删除元素
void watch();//浏览链表
};
void print()
{
cout << "1.插入元素\n2.删除元素\n3.浏览链表\n4.退出系统" << endl;
}
void link::creat()
{
int a = 0;
cout << "请输入一个元素" << endl;
cin >> a;
head = new node[sizeof(node)];
head->value = a;
head->next = NULL;
}
void link::push()
{
if (head == nullptr)
cout << "链表为空" << endl;
else
{
node* p = head;
int a;
cout << "请输入一个元素" << endl;
cin >> a;
node* d;
d = new node[sizeof(node)];
d->value = a;
d->next = nullptr;
while (p->next != nullptr)
{
p = p->next;
}
p->next = d;
}
}
void link::pop()
{
if (head == nullptr)
cout << "链表为空" << endl;
else
{
int a;
node* p = head;
node* q = nullptr;
cout << "请输入你想要删除的元素" << endl;
cin >> a;
while (p->value != a && p->next != nullptr)
{
q = p;
p = p->next;
if (p->value == a)
{
q->next = p->next;
free(p);
}
}
if (head->value == a)
{
node* a=head;
head = head->next;
free(a);
}
}
}
void link::watch()
{
if (head == nullptr)
cout << "链表为空" << endl;
else
{
node* p = head;
while (p->next != nullptr)
{
cout << p->value << "->";
p = p->next;
}
cout << p->value << endl;
}
}
int main()
{
node a;
link s;
print();
int b=0;
cout << "请先创建一个链表" << endl;
s.creat();
while (b != 4)
{
print();
cin >> b;
switch (b)
{
case 1:s.push(); break;
case 2:s.pop(); break;
case 3:s.watch(); break;
}
}
return 0;
}