定义结构体指针
typedef struct LinkNode
{
/* 数据域 */
int data;
/* 指针域 */
LinkNode *next;
}LinkNode;
尾插法创建链表
struct LinkNode *tailLinkList (LinkNode *p, int n) // n 为链表结点个数
{
/* 定义头结点、尾结点 */
LinkNode *head, *tail;
/* 开辟头结点内存空间 */
head = new LinkNode;
/* 将尾结点指向头结点 */
tail = head;
/* 定义变量 data,用来接受数值 */
int data;
/* 输入各结点的值,并赋给变量 data*/
for (int i = 0; i < n; i ++)
{
cin >> data;
/* 定义一般结点,并开辟内存空间 */
LinkNode *p = new LinkNode;
/* 将输入的值赋给一般结点的数据域 */
p -> data = data;
/* 将一般结点链接到尾结点 */
tail -> next = p;
/* 将尾结点指向一般结点 */
tail = p;
}
/* 使尾结点的指针域指向 NULL */
tail -> next = NULL;
/* 返回头结点的地址 */
return head;
};
头插法创建链表
struct LinkNode *headLinkList(LinkNode *p, int n) /* n 为链表的长度 */
{
LinkNode *head = new LinkNode;
head -> next = NULL;
int data;
for (int i = 0; i < n; i ++)
{
p = new LinkNode;
cin >> data;
p -> data = data;
p -> next = head;
head = p;
}
return head;
}
遍历链表
void display (LinkNode *p)
{
while (p -> next != NULL)
{
/* 由于头结点的数据域未赋值,所以先指向下一结点 */
p = p -> next;
cout << p-> data << ' ';
}
}
主函数
int main()
{
/* 定义一般结点,并开辟内存空间 */
LinkNode *p = new LinkNode;
/* 定义变量 n,用来接受链表长度 */
int n;
cout << "请输入链表的长度: \n";
cin >> n;
/* 将一般结点传入函数中,并用其自身接受返回值 */
cout << "\n请依次输入链表各结点的值:\n";
p = tailLinkList(p, n); /* 尾插法 */
// p = headLinkList(p, n); /* 头插法 */
/* 遍历链表 */
cout << "\n链表各结点的值为:\n";
display(p);
system("pause");
return 0;
}