C++语言基础学习13

题目描述

构建一个单向链表,链表中包含一组整数数据。输出链表中的所有元素。

要求:
1. 使用自定义的链表数据结构
2. 提供一个 linkedList 类来管理链表,包含构建链表和输出链表元素的方法
3. 在 main 函数中,创建一个包含一组整数数据的链表,然后调用链表的输出方法将所有元素打印出来

输入描述

包含多组测试数据,输入直到文件尾结束。 

每组的第一行包含一个整数 n,表示需要构建的链表的长度。 

接下来一行包含 n 个整数,表示链表中的元素。

输出描述

每组测试数据输出占一行。
按照顺序打印出链表中的元素,用空格隔开,最后一个元素后没有空格。

输入示例
5
1 2 3 4 5
6
3 4 5 6 7 8
输出示例
1 2 3 4 5
3 4 5 6 7 8
副露的弱智想法: 

这个真一点不懂了哥几个,让我们先来看看基础知识再想这玩意怎么做吧。 

复活,正好算法方面也学习到这,尝试手写一下:先贴个成熟代码在这,等我回来看看我写的答辩

#include<iostream>
using namespace std;


struct ListNode{
    int val;
    ListNode *next;
    ListNode(int x):val(x),next(nullptr){}
};
//int x表示定义一个接受整数参数x的名称为ListNode的构造函数
//表示初始化列表开始,val(x)表示链表数据域的值被初始化为传递的参数 x 
   //next(nullptr)则表示指针被初始化为nullptr,表示没有下一个节点。
int main(){
    int n,val;
    ListNode *xuninode = new ListNode(0);
    
    while(cin >> n){
        ListNode *cur = xuninode;
        for(int i=0;i<n;i++){
            cin >> val;
            ListNode *newnode = new ListNode(val);
            cur -> next = newnode;
            cur = cur -> next;
        }//经典的添加节点操作
        cur = xuninode;//恢复到初始处
        while(cur->next != NULL){
            cout << cur->next->val << ' ';
            cur = cur->next;
        }
        cout << endl;
        
    }
}

 我回来了,写的依托,打开一看十几个错误:

#include<iostream>
using namespace std;

struct ListNode{
    int val;
    ListNode *next;//(下一个链表节点的地址,用next)
    // ListNode(val):int val,ListNode *node 这在写鸡毛
    ListNode(int x):val(x),next(nullptr){}
};//定义新节点构造方法,记得分号
int main(){
    int n,val;
    ListNode *xuni = new ListNode(0);//定义虚拟节点

    while(cin >> n){//当有n输入的时候
        
        // ListNode *cur;//定义一个指向最前节点的指针   
        // cur -> next = xuni;
        ListNode *cur = xuni;
        
        for(int i=0;i<n;i++){
            cin >> val;
            ListNode *newnode = new ListNode(val);
            cur -> next = newnode;
            cur = cur ->next;
        }//添加节点的经典方法
        //处理完链表之后要把cue指针调回链表头
        cur = xuni;
        while(cur->next != NULL){        
        // if(cur->next == NULL){ 这里要使用多次,向前推进遍历
            cout << cur->next->val << " ";
            cur = cur ->next;//继续往前走
        }//如果碰到指向NULL的,说明这一次的n个数已经处理完了
        cout << endl;
    }
}

至少基本掌握了怎么回事了:(

如有错误,敬请指出,感激不尽!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值