CPP单项链表插入数据初试

//vs2015_unit
#include
#include
using namespace std;
int Flag=0;
typedef int DATA;
struct SNode
{
DATA data;
SNode* pNext;
};
class CLink
{
SNode* m_pHead;
char m_Name[20];
public:
CLink()//构造函数
{
m_pHead=NULL;

}
~CLink()
{
	//cout << m_Name << endl;
	RemoveAll();
}
void RemoveAll();
void SetName(const char	*p);		
void AddHead(DATA data);
void AddTail(DATA data);	
void Print();	
int GetCount();	

private:

};
void CLink :: RemoveAll()
{
SNode *p = m_pHead, *p1;
while §
{
p1 = p;//清理堆空间,清理的顺序是先建立的后清理。
p = p->pNext;
delete p1;
}

}
void CLink::SetName(const char p)
{
strcpy_s(m_Name, 20, p);
}
void CLink:: AddHead(DATA data)
{
SNode
p = new SNode;
p->data = data;
p->pNext = m_pHead;
m_pHead = p;
}
void CLink::AddTail(DATA data)
{
SNode* p = new SNode;
p->data = data;
p->pNext = NULL;
if (!m_pHead)
{
m_pHead = p;
return;
}
SNode* p1 = m_pHead;
while (p1->pNext != NULL)
{
p1 = p1->pNext;
}
p1->pNext = p;
}
void CLink::Print()
{
cout << m_Name << endl;
SNode *p = m_pHead;
while §
{
cout << p->data << endl;
p = p->pNext;
}
}
int CLink:: GetCount()
{
SNode *p = m_pHead;
int i = 0;
while §
{
p = p->pNext;
i++;
}
return i;
}

struct SList
{
SNode * m_pHead=nullptr;
CLink link;
SList()
{
}
SList(const char *p)
{
link.SetName§;
}
void Menu()
{
cout << “0.返回上级菜单” << endl;
cout << “1.插入数据” << endl;
cout << “2.打印数据” << endl;
cout << “3.打印节点数” << endl;
int i = 0;
cin >> i;
switch (i)
{
case 0:
return;
case 1:
AddData();
return;
case 2:
Print();
break;
case 3:
GetNodes();
break;
default:
break;
}
}
void AddData()
{
cout << “0.返回上级菜单” << endl;
cout << “1.头插入数据” << endl;
cout << “2.尾插入数据” << endl;

	int i = -1;
	cin >> i;		
		switch (i)
		{
		case 0:
			return;
		case 1:
			AddHead();
			break;
		case 2:
			AddTail();
			break;
		default:
			break;
		};	
	
}
void AddHead()
{
	Flag = 1;
	cout << "请输入一个整数" << endl;
	DATA data = -1;
	cin >> data;
	while (Flag)
	{		
		link.AddHead(data);
		char c;
		cout << "是否继续添加?y/n" << endl;
		cin >> c;
		if (c == 'y' || c == 'Y') { AddData(); }
		else
		{
			Flag = 0;
			//return;
		}

	}
			
}
void AddTail()
{
	cout << "请输入一个整数" << endl;
	DATA data = -1;
	cin >> data;

	link.AddTail(data);
}

void Print()
{	
	link.Print();
	system("pause");
}
void GetNodes()
{
int n=	link.GetCount();
cout <<"共有"<< n<<"个节点" << endl;
system("pause");
}

};

int main()
{
SList list1(“list1”);
SList list2(“list2”);

int i = 0;
do
{
	system("cls");
	cout << "请选择链表(1-2):" << endl;
	cout << "选择 0 退出:" << endl;
	cin >> i;
	switch (i)
	{
	case 1:
		list1.Menu();
		break;
	case 2:
		list2.Menu();
		break;
	case 0:
		return 0;
	default:
		break;
	}
} while (i);

return 0;

}
//
//CLink link1;
//link1.SetName(“List1”);
//link1.AddTail(9);
//link1.AddHead(8);
//link1.AddTail(7);
//link1.AddTail(1);
//link1.AddTail(2);
//link1.AddTail(3);
//link1.AddHead(1);
//link1.AddHead(2);
//link1.AddHead(3);
//link1.Print();
//cout << “共有” << link1.GetCount() << “条” << endl;
//
//CLink *p = new CLink;
//p->SetName(“堆空间”);
//p->AddHead(45);
//p->AddTail(36);
//p->AddHead(98);
//p->Print();
//delete p;//进入析构函数清理自己用过的堆空间
//
//CLink link2;
//link2.SetName(“List2”);
//link2.AddTail(3);
//link2.AddTail(2);
//link2.AddTail(1);
//link2.AddHead(4);
//link2.AddHead(1);
//link2.AddHead(2);
//link2.AddHead(3);
//link2.Print();
//cout << “共有” << link2.GetCount() << “条” << endl;

猜你喜欢

转载自blog.csdn.net/weixin_43769045/article/details/84949441