赞
踩
数据结构编程练习(二)
功能1:在构造函数完成带头结点单链表的初始化。
功能2:输入数据,利用尾插法完成链表生成。
功能3:求单链表表长。
功能4:求链表中第i个元素,要求返回第i个元素是否存在的结果,并返回第i个元素值及其结点地址。
功能5:在第i个结点前插入值为x的结点。
功能6:删除链表中第i个元素结点,需返回第i个结点是否存在的状态,并返回删除结点中存储的数据。
功能7:在析构函数中完成链表内存释放,声明一个对象,截图描述并说明其构造函数、析构函数调用顺序及过程。
代码实现:
- #include "iostream"
- using namespace std;
- struct node
- {
- int data;
- node *next;
- };
- class list
- {
- public:
- list();
- ~list();
- int create_L();
- int length();
- int get_element(int i);
- int insert(int i,int &x);
- int del_element(int i);
- int print();
- private:
- int count;
- node *head;
- };
- //单链表的初始化
- list::list()
- {
- head=new node;
- head->next=NULL;
- count=0;
- }
- //析构函数释放内存
- list::~list()
- {
- node *n=head;
- while(count--)
- {
- node *p=n->next;
- delete n;
- n=p;
- }
- }
- //尾插法建立单链表
- int list::create_L()
- {
- int m;
- cout<<"请输入所要建立的单链表的长度:";
- cin>>m;
- cout<<"请输入各元素:";
- node *n=head;
- while(m--)
- {
- node *p=new node;
- n->next=p;
- p->next=NULL;
- cin>>p->data;
- n=p;
- count++;
- }
- return 0;
- }
- //求单链表的长度
- int list::length()
- {
- return count;
- }
- //取第i个位置的元素
- int list::get_element(int i)
- {
- if(i<=0||i>count)
- {
- cout<<"不在范围"<<endl;
- return 0;
- }
- else
- {
- node *n=head;
- while(i--)
- n=n->next;
- cout<<"该位置的元素为:"<<n->data<<endl;
- return 1;
- }
- }
- //在第i个结点前插入值为x的结点
- int list::insert(int i,int &x)
- {
- if(i<=0||i>count)
- {
- cout<<"不在范围"<<endl;
- return 0;
- }
- else
- {
- node *n=head;
- i--;
- while(i--)
- n=n->next;
- node *p=new node;
- p->data=x;
- p->next=n->next;
- n->next=p;
- count++;
- return 1;
- }
- }
- //删除第i个位置元素
- int list::del_element(int i)
- {
- if(i<=0||i>count)
- {
- cout<<"不在范围"<<endl;
- return 0;
- }
- else
- {
- node *n=head;
- i--;
- while(i--)
- n=n->next;
- cout<<n->next->data<<"已被删除"<<endl;
- n->next=n->next->next;
- count--;
- return 1;
- }
- }
- //输出单链表
- int list::print()
- {
- node *n=head;
- cout<<"当前单链表为:";
- while(n->next!=NULL)
- {
- node *p=n->next;
- cout<<p->data<<" ";
- n=p;
- }
- cout<<endl;
- return 0;
- }
- int main()
- {
- list obj1;
- int n,x;
- obj1.create_L();
- obj1.print();
- cout<<"单链表的长度为:"<<obj1.length()<<endl;
- cout<<"请输入所要查找的位置:";
- cin>>n;
- obj1.get_element(n);
- obj1.print();
- cout<<"请输入所要插入的位置以及所要插入的元素:";
- cin>>n>>x;
- obj1.insert(n,x);
- obj1.print();
- cout<<"请输入所要删除的位置:";
- cin>>n;
- obj1.del_element(n);
- obj1.print();
- return 0;
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。