在ACM水了很久,开始写个博客吧
链表基础
给个题吧,从键盘上先输入数字n,代表长度,然后输入n个数字,然后顺序建立链表,输出链表。
比如n=10;
然后输入1到10个数字
#include<iostream>
#include<cstdlib>
using namespace std;
struct node
{
int data;
node *next;
};//声明节点,包括数据域和指针域
struct node*create(int n)//建立链表
{
node *head, *tail, *p;
int i;
head = (struct node*)malloc(sizeof(struct node));//申请头结点
head->next = NULL;//让头节点为指向为空
tail=head;//头尾指针指向同一个结点
for (i = 0; i < n; i++)
{
p = (struct node*)malloc(sizeof(struct node));//申请新结点
cin >> p->data;输入新结点的数据域
p->next = NULL;结点的指针域为空
tail->next = p;//将新结点插入链表尾部
tail = p;//尾结点指向新结点
}
return head;//返回头结点
}
void print(node*head)//输出链表
{
node*p;
p = head->next;
while (p != NULL)
{
cout << p->data;
if (p->next != NULL)
cout << " ";
p = p->next;//指向下一个结点
}
cout << endl;
}
int main()
{
int n;
struct node*head;
while (cin>>n)
{
head = create(n);//建立链表
print(head);输出链表
}
return 0;
}
程序运行结果