首页 > 编程语言 >Lab6:面向功能程序构造方法及创新应用 (创新)

Lab6:面向功能程序构造方法及创新应用 (创新)

时间:2023-11-21 19:55:40浏览次数:28  
标签:node nxt head 创新 ListNode 构造方法 now Lab6 NULL

1. 在C++中通过递归方法实现单链表倒置

将代码分为几个部分,顺便把之前的链表建立重新写一遍

初始化列表

struct ListNode{
	int val;
	LiseNode* next;
	ListNode(int x) :val(x),next(NULL){}
};

遍历

void query_node(){
	node *p=head;
	while(p!=NULL){
		cout<<p->data<<' ';
		p=p->nxt;
	}
	cout<<endl;
}

建表(尾部插入)

void build_node(){
	head=NULL,tail=NULL;
	for(int i=1;i<=5;i++){
		int x;
		cin>>x;
		node *tmp=new node(x);
		if(head==NULL) head=tail=tmp;
		else {
			tail->nxt=tmp;
			tail=tmp;
		}
	} 
}

倒置(递归)

node *reverse_node(node *now){
	if(now->nxt==NULL) return now;
	node *newhead=reverse_node(now->nxt);
	now->nxt->nxt=now;
	now->nxt=NULL;
	return newhead;
}

完整代码

1.精简版

#include<bits/stdc++.h>
using namespace std;
struct node{
	int data;
	node *nxt;
	node(int x) : data(x),nxt(NULL){}
}; 
node *head,*tail;
void query_node(){
	node *p=head;
	while(p!=NULL){
		cout<<p->data<<' ';
		p=p->nxt;
	}
	cout<<endl;
}
void build_node(){
	head=NULL,tail=NULL;
	for(int i=1;i<=5;i++){
		int x;
		cin>>x;
		node *tmp=new node(x);
		if(head==NULL) head=tail=tmp;
		else {
			tail->nxt=tmp;
			tail=tmp;
		}
	} 
}
node *reverse_node(node *now){
	if(now->nxt==NULL) return now;
	node *newhead=reverse_node(now->nxt);
	now->nxt->nxt=now;
	now->nxt=NULL;
	return newhead;
}
int main(){
	build_node();
	cout<<"original node:";
	query_node();
	head=reverse_node(head); //注意要把head指向新的首节点 
	cout<<"After reverse:";
	query_node();
	return 0;
}

2.详细注释版

#include <iostream>
using namespace std;

// 定义链表结点
struct ListNode {
    int val;
    ListNode* next;
    ListNode(int x) : val(x), next(NULL) {} 
};


// 递归函数,实现链表倒置
ListNode* reverseList(ListNode* head) {
    // 如果链表为空或者只有一个结点,则直接返回
    if (head->next == NULL) {
        return head;
    }

    // 递归调用,获取倒置后的链表头结点
    ListNode* newHead = reverseList(head->next);

    // 将当前结点插入到倒置后链表的末尾
    head->next->next = head;
    head->next = NULL;

    return newHead;
}

// 初始化链表,从键盘输入五个数据依次插入链表尾部
ListNode* initList() {
    ListNode* head = NULL;
    ListNode* tail = NULL;
    for (int i = 0; i < 5; i++) {
        int x;
        cin >> x;
        ListNode* node = new ListNode(x); //这里必须使用new 
        if (head == NULL) {
            head = node;
            tail = node;
        }
        else {
            tail->next = node;
            tail = node;
        }
    }
    return head;
}

int main() {
    // 初始化链表
    ListNode* head = initList();

    // 输出原始链表
    cout << "Original List: ";
    ListNode* p = head;
    while (p) {
        cout << p->val << " ";
        p = p->next;
    }
    cout << endl;

    // 倒置链表
    head = reverseList(head);

    // 输出倒置后的链表
    cout << "Reversed List: ";
    p = head;
    while (p) {
        cout << p->val << " ";
        p = p->next;
    }
    cout << endl;

    return 0;
}

标签:node,nxt,head,创新,ListNode,构造方法,now,Lab6,NULL
From: https://www.cnblogs.com/conprour/p/17847424.html

相关文章

  • 奥哲亮相第25届高交会,荣膺智慧城市展数字化创新奖!
    11月15日,第二十五届中国国际高新技术成果交易会(简称:高交会)在深圳隆重开幕。作为目前国内规模最大、影响力最大的科技类展会,本届展会上的智慧城市展全面展示了当今全球前瞻的大数据、云计算、人工智能等创新应用技术、优秀研发成果和行业解决方案,并隆重举行了2023年度中国智慧城市......
  • 人工智能 | 企业私有版大语言模型引领人工智能创新
    随着人工智能(AI)技术的不断发展,企业在利用大数据和深度学习等技术方面取得了巨大的进步。在这个不断演变的环境中,企业私有版大语言模型正逐渐崭露头角,成为推动创新和业务增长的关键工具。本文将深入探讨企业私有版大语言模型的重要性以及它在人工智能领域中的应用前景。1.企业私有......
  • Meta Llama大模型:引领人工智能创新的巅峰之作
    人工智能(AI)领域的蓬勃发展一直是科技创新的关键推动力之一。近年来,MetaLlama大模型的出现引起了广泛关注,被誉为人工智能领域的一次革命。本文将探讨MetaLlama大模型的背景、特点以及其在人工智能创新中的潜在影响。背景MetaLlama大模型是由MetaAI公司(前身为Facebook)研发的一种......
  • 激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相
    激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相CogVLM是一个强大的开源视觉语言模型(VLM)。CogVLM-17B拥有100亿视觉参数和70亿语言参数。CogVLM-17B在10个经典跨模态基准测试上取得了SOTA性能,包括NoCaps、Flicker30kcaptioning、RefCOCO、RefCOCO+、RefCO......
  • Lab5: 面向功能程序构造方法及创新应用 (基础)
    1、构造两数交换的函数,并验证各种参数形式代码#include<iostream>usingnamespacestd;//交换两个整数的值voidswap(int&a,int&b){inttemp=a;a=b;b=temp;}//交换两个浮点数的值voidswap(double&a,double&b){doubletemp=a;......
  • 零数科技荣获数据资产智慧创新奖
    10月20日,重庆市云计算和大数据产业协会举办第三届会员大会暨换届选举大会。零数科技作为全国领先的数据共享与资产流通基础设施提供商,获颁“数据资产智慧创新奖”。左起第5位为零数科技领奖代表零数科技获颁数据资产智慧创新奖作为国家大数据综合试验区和国家区块链创新应用综合性......
  • 字节跳动小程序开发:探索创新的数字化世界
    在数字化时代,字节跳动小程序开发成为企业数字化转型的关键一环。通过这一平台,企业能够借助先进的技术和丰富的功能,实现创新、引领市场潮流。本文将通过一些简单的技术代码示例,带你深入了解字节跳动小程序开发的魅力。1.小程序入口文件app.js//app.jsApp({onLaunch:function......
  • 开源网安解决方案荣获四川数实融合创新实践优秀案例
    11月16日,2023天府数字经济峰会在成都圆满举行。本次峰会由四川省发展和改革委员会、中共四川省委网络安全和信息化委员会办公室、四川省经济和信息化厅等部门联合指导,聚焦数字经济与实体经济深度融合、数字赋能经济社会转型发展等话题展开交流研讨。会上发布了四川数实融合创新实践......
  • 四载磨砺,一群青年“识瘤者”以AI助力医疗创新
    ​​本文分享自华为云社区《【先锋开发者云上说】四载磨砺,一群青年“识瘤者”以AI助力医疗创新》,作者:Gauss松鼠会小助手2。一群青年“识瘤者”,四载磨砺,攻克智慧医疗难题,点燃健康革命的火花!皮肤肿瘤患者的“福音”就读于郑州轻工业大学嵌入式软件专业大三的杨阳,目前也是梅科尔......
  • 数字经济行业盛会,引领高科技创新发展!
    备受瞩目的“第二十五届中国国际高新技术成果交易会(简称:高交会)”于2023年11月15日盛大开幕。本届高交会有来自105个国家和地区的4295家参展商,其中1410家国家高新技术企业,598家专精特新企业参与其中,展览面积达50万平方米,创历史之最!在深圳会展中心(福田展区)1号馆新一代信息技术展(简称:I......