初识-链表-创建

定义结构体指针

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;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

os.system

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值