#include<iostream>
#define Status int
using namespace std;
class ListOperate
{
public:
typedef struct Node //单链表的定义
{
Status data;
struct Node* next;
}Node, * LinkList;
Status GetElem(LinkList L,int i)//按位查找
{
if (i < 0)cout << "查值有误";
}
int GetElem(Status i,LinkList L)//按值查找
{
if (i)cout<<"查值有误";
}
void ListInsert(LinkList &L,int i, Status e)//插入int a插入位,e插入数
{
if ( i <= 0||!e)
{
cout << "输入值不合法"<<endl;
}
else
{
Node* p = L;
for (; i >= 1; i--)
{
p = p->next;
}
LinkList k = (LinkList)malloc(sizeof(Node));
if (k!= NULL)
{
k->data = e;
k->next = p->next;
p->next = k;
}
else
{
cout << "内存不足";
}
}
}
void ListDelete(LinkList &L,int i,Status &e)//删除
{
if (i <= 0)
{
cout << "输入值不合法" << endl;
}
else
{
Node* p = L;
if (p == NULL || p->next == NULL)
{
cout << "输入值不合法" << endl;
}
else
{
for (; i >= 1; i--)
{
p = p->next;
}
Node* q = p->next;
e = q->data;
p->next = q->next;
free(q);
L = p;
}
}
}
void ListDelete(LinkList &L, Status e)//删除指定data为e的节点
{
LinkList p=L;
if (p != NULL)
{
while (p->next != NULL&&p->data!=e)
{
p = p->next;
}
if (p->next != NULL)
{
p->data = p->next->data;
p->next = p->next->next;
free(p->next);
}
}
L = p;
}
void ClearList(LinkList &L)//清空
{
while (L->next != NULL)
{
LinkList i = L;
L = L->next;
free(i);
}
free(L);
}
LinkList ClearListHT(int a,int t)//选择创建
{
ReturnList->next = NULL;//带头节点
Status Cout;
cin >> Cout;
for (; a >= 0; a--)
{
if (t == 0)
{
while (Cout)
{
cin >> Cout;
CreateListHead(Cout);
}
}
else
//LinkList p = ReturnList;
while (Cout)
{
cin >> Cout;
CreateListTail(Cout);
}
}
return ReturnList;
}
private:
LinkList ReturnList = (LinkList)malloc(sizeof(Node));
LinkList CreateListHead(int Cout)//头插法
{
LinkList p = (LinkList)malloc(sizeof(Node));
if (p != NULL)
{
p->data = Cout;
p->next = ReturnList->next;
ReturnList->next = p;
return ReturnList;
}
else
{
cout << "内存不足";
}
}
LinkList CreateListTail(Status Cout)//尾插法
{
LinkList p = (LinkList)malloc(sizeof(Node));
if (p != NULL) //现实方式和上面差不多,就不做了
{
p->data = Cout;
p->next = ReturnList->next;
}
return ReturnList;
}
};
int main()
{
ListOperate a;
ListOperate::LinkList t = a.ClearListHT(4, 0);
a.ClearList(t);
}
封装单链表
于 2024-04-09 10:47:06 首次发布