FUYING_ 2020-03-13 10:13 采纳率: 0%
浏览 495

请用C++语言帮忙完善以下程序(单链表的实现)

#include
#include
using namespace std;
typedef int ElemType;

// 结点定义
struct Node
{
// 数据成员:
ElemType data; // 数据域
struct Node *next; // 指针域
};

// 单链表类定义
class LinkList
{
private:
struct Node head; // 头结点指针
public:
//线性链表方法声明:
LinkList();
virtual ~LinkList( );
void CreateListTail( );
void CreateListHead( );
void CreateListOrder();
void DeleteElem(ElemType e);
void Insert(int position, ElemType e);
void DeletePos (int position);
void Traverse();
};
//构造函数,初始化单链表,创建头结点
LinkList::LinkList()
{
head=(Node
)malloc(sizeof(Node));
head->next=NULL;
cout<<"单链表表初始化成功"<<endl;
//return 1;
}
//析构函数
LinkList::~LinkList()
{
head=NULL;
//return 0;
}
//用尾插法构造单链表,新结点插入在单链表尾结点之后
//用户依次输入多个数据元素,直到输入0结束
void LinkList::CreateListTail( )
{

}
//用头插法构造单链表,新结点插入在单链表头结点之后
//用户依次输入多个数据元素,直到输入0结束
void LinkList::CreateListHead( )
{

}
//构造有序单链表,初始时单链表为空,将元素按照值大小,从小到大插入到链表中
//用户依次输入多个数据元素,直到输入0结束
void LinkList::CreateListOrder()
{

}
//删除单链表中值为e的结点,成功输出“已删除e元素”,
//失败则输出原因(栈为空,或者未找到e元素
void LinkList::DeleteElem(ElemType e)
{

}
//删除单链表中位于position位置的结点,成功输出“已删除第position个元素”,
//失败则输出原因(栈为空,或者未找到第position个元素
void LinkList::DeletePos (int position)
{

}
//在单链表position位置插入元素e
void LinkList::Insert(int position, ElemType e)
{

}
//遍历单链表,将单链表数据元素依次输出
void LinkList::Traverse()
{
if (head->next == NULL)
{
cout << "链表为空表" << endl;
}
struct Node *p = head->next;

while (p!= NULL)

{

cout << p->data << " ";
p = p->next;
}
}

int main(void)
{
LinkList lk1,lk2,lk3;
int c = 0;
int position;
ElemType elem;
while (c != 7)
{
cout << endl << "1. 头插法创建单链表";
cout << endl << "2. 尾插法创建单链表";
cout << endl << "3. 在单链表中插入元素";
cout << endl << "4. 在单链表中删除elem元素";
cout << endl << "5. 在单链表中删除第position个元素";
cout << endl << "6. 构造有序单链表";
cout << endl << "7. 退出";
cout << endl << "选择功能(1~7):";

cin >> c;
switch (c)
{
case 1:
lk1.CreateListHead( );
lk1.Traverse();
break;
case 2:
lk2.CreateListTail( );
lk2.Traverse();
break;
case 3:
cout<<"请输入插入位置:"< cin>>position;
cout<<"请输入要插入的数据:";
cin>>elem;
lk1.Insert(position, elem);
lk1.Traverse();
break;

case 4:
cout<<"请输入要删除的数据:";
cin>>elem;
lk1.DeleteElem(elem);
lk1.Traverse();
break;
case 5:
cout<<"请输入删除元素的位置:"< cin>>position;
lk1.DeletePos(position);
lk1.Traverse();
break;
case 6:
lk3.CreateListOrder( );
lk3.Traverse();
break;
case 7:
cout<<"结束操作"<<endl;
lk1.~LinkList();
lk2.~LinkList();
lk3.~LinkList();
break;
}
}
}


  • 写回答

1条回答 默认 最新

  • dabocaiqq 2020-03-13 11:12
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题