实验目的
本文主要是给c语言初学者或数据结构初学者展示一个简单的链表结构的实现方式,可以作为简单的参考。除了代码外,本文有部分博主自己对代码的简单分析,可以通过下面的链接免费下载。
代码
#include<iostream>
using namespace std;
//---------------------
struct Student {
long number;
Student* next;
};//-------------------
Student* head; //链首指针
Student* getNode() {
int num;
cin >> num;
if (num == 0)
return NULL; //结点无效,结束创建过程
Student* p = new Student;
p->number = num;
p->next = 0;
return p;
}
Student* Create() {
head = getNode(); //新建第一个结点,挂入链首
if (head == 0)
return 0; // 返回空链表
for (Student* pEnd = head, *pS; pS = getNode(); pEnd = pS) //pEnd指向尾结点,pS获取结点判断有效性
pEnd->next = pS;
return head;
}
void ShowList(Student* head) {
cout << "链表为 \n";
for (; head; head = head->next)
cout << head->number << endl;
}
int main()
{
int flag = 1;
while (flag)
{
cout << "1--创建新列表" << endl
<< "4--显示列表" << endl
<< "0--退出程序" << endl;
cin >> flag;
switch (flag)
{
case 1: // 创建新列表
{
cout << "创建链表,输入0结束创建" << endl;
Create();
//DisplayAllDataBySeq(g_p);
}
break;
case 4: // 显示列表
{
if (head != NULL)
ShowList(head);
else
printf("目前还没有建立链表,无法显示\n");
}
break;
case 0: // 退出程序
break;
default: // 输入错误
cout << "请输入正确的数字!!!\n";
break;
}
}
}