C++手写链表(头插法和尾插法)

本文展示了如何在C++中使用typedef定义链表结构并实现头插法和尾插法创建链表。程序首先定义了链表节点结构,接着分别通过头插法和尾插法创建链表,并提供了输出链表内容的函数。用户可以输入链表长度,程序会动态创建链表并显示其内容。
摘要由CSDN通过智能技术生成

#include<iostream>
using  namespace  std;

 typedef struct listnode {
    int data;
    listnode* next;
}lnode,*linklist ;//如果说没有加typedef,那么就是变量,如果加上typedef就是取别名
 //LNode,*LinkList均为LNode的别名,
 
//前插法
void createlist_h(linklist&l,int n)
{
   l = new lnode;//先将头节点开辟空间,
    l->next = NULL;//将头节点空
    for (int i = 0; i < n; i++)
    {
     lnode * p = new lnode();//开辟下一个节点
        cin >> p->data;
        p->next = l->next;//第一步是将p的下一个节点置为空(就是尾节点),然后第二步往后就是将新节点的下一个值指向老节点
        l->next = p;//将头节点指向p
    }
}
//尾插法
void createlist_r(linklist &l,int n)
{
    l = new lnode;
    l->next = NULL;
    lnode *r = l;//尾指针指向头指针,记住现在还没有节点
    for (int i = 0; i < n; i++)
    {
       lnode* p = new lnode();
       cin >> p->data;
       p->next = NULL;//将p的下一个置为空,一直要保证p可能为最后一个节点
       r->next = p;//不能调用头指针,调用尾指针
       r = p;
    }

}
void out_list(lnode *L)//输出链表
{
    lnode* p1 = L;
    while (p1)
    {
        cout << p1->data<<" ";
        p1 = p1->next;
    }

}

int main()
{
    linklist L;
   // linklist M;
    int n =0;
    cout << "请输入链表长度" << endl;
    cin >> n;
    createlist_h(L, n);//头插函数
    out_list(L);
    //createlist_r(M, m);//尾插函数
    system("pause");
    return 0;
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值