C語言題目:鏈表數據求和操作

題目描述

讀入10個復數,建立對應鏈表,然后求所有復數的和。

輸入格式

輸出格式

樣例輸入

1 2
1 3
4 5
2 3
3 1
2 1
4 2
2 2
3 3
1 1

樣例輸出

23+23i

代碼功能概述

  1. createNode 函數

    • 創建一個包含 10 個復數節點的鏈表。

    • 每個節點存儲復數的實部 (real) 和虛部 (image)。

  2. sumNode 函數

    • 遍歷鏈表,計算鏈表中所有復數的和。

    • 釋放鏈表中的節點內存,并輸出最終的求和結果。

  3. main 函數

    • 調用 createNode 創建鏈表。

    • 調用 sumNode 對鏈表中的復數進行求和。

代碼解析

1. 頭文件和結構體定義
#include <stdio.h>
#include <stdlib.h>typedef struct Node
{int real;int image;struct Node *next;
} Node;
  • #include <stdio.h>:包含標準輸入輸出函數(如 scanfprintf)。

  • #include <stdlib.h>:包含內存管理函數(如 mallocfree)。

  • typedef struct Node:定義了一個鏈表節點結構體 Node,包含:

    • real:存儲復數的實部。

    • image:存儲復數的虛部。

    • next:指向下一個節點的指針。

2. 創建鏈表函數 (createNode)
Node *createNode()
{Node *head, *p, *q;head = (Node*)malloc(sizeof(Node)); // 創建頭節點p = head;for (int i = 0; i < 10; i++){q = (Node*)malloc(sizeof(Node)); // 創建新節點scanf("%d%d", &q->real, &q->image); // 輸入實部和虛部q->next = NULL; // 新節點的下一節點初始化為 NULLp->next = q; // 將新節點鏈接到鏈表p = q; // 移動指針到新節點}return head; // 返回鏈表頭指針
}
  • head:鏈表的頭節點。

  • pq:指針變量,用于遍歷鏈表和創建新節點。

  • 循環 10 次:創建 10 個復數節點,每次輸入一個復數的實部和虛部。

  • 鏈表鏈接:每個新節點的 next 指向新分配的節點,形成鏈表。

3. 鏈表求和函數 (sumNode)
void sumNode(Node *head)
{Node *newNode = (Node*)malloc(sizeof(Node));Node *p = head->next; // 從第一個數據節點開始Node *q;newNode->real = 0; // 初始化求和的實部和虛部newNode->image = 0;newNode->next = NULL;while (p != NULL) // 遍歷鏈表{newNode->real += p->real; // 累加實部newNode->image += p->image; // 累加虛部q = p; // 保存當前節點指針p = p->next; // 移動到下一個節點free(q); // 釋放當前節點內存}printf("%d+%di\n", newNode->real, newNode->image); // 輸出求和結果return newNode; // 返回求和節點指針(注意:返回類型不正確,應該是 void)
}
  • newNode:用于存儲求和結果的新節點。

  • p:遍歷鏈表的指針,從頭節點的下一個節點開始。

  • while 循環:遍歷鏈表中的每個節點,累加實部和虛部。

  • 釋放內存:每次遍歷一個節點時,釋放該節點的內存。

  • 輸出結果:以 實部+虛部i 的格式輸出求和結果。

4. 主函數 (main
int main(void)
{Node *head;head = createNode(); // 創建鏈表sumNode(head); // 求和并輸出結果return 0;
}
  • 調用 createNode 創建鏈表。

  • 調用 sumNode 對鏈表中的復數進行求和并輸出結果。

注意事項

  1. 內存泄漏

    • sumNode 函數中釋放了鏈表中的所有節點,但沒有釋放頭節點 head

    • 如果需要完整的內存管理,應在 sumNode 函數中添加對 head 的釋放。

  2. sumNode 的返回值

    • 函數聲明的返回類型是 void,但代碼中返回了 newNode,這會導致編譯錯誤。應移除或注釋掉 return newNode;

  3. 用戶輸入

    • 如果輸入的復數個數少于 10 個,程序會崩潰。建議添加輸入驗證。

示例運行

假設輸入以下 10 個復數:

1 2
3 4
5 6
7 8
9 10
11 12
13 14
15 16
17 18
19 20

輸出將是:

100+110i

總結

這段代碼實現了一個簡單的鏈表復數求和功能,適合初學者學習鏈表的基本操作。

源代碼

#include <stdio.h>
#include <stdlib.h>typedef struct Node
{int real;int image;struct Node *next;
}Node;Node *createNode()
{Node *head,*p,*q;head = (Node*)malloc (sizeof(Node));p = head;for(int i = 0; i<10; i++){q = (Node*)malloc(sizeof(Node));scanf("%d%d",&q->real,&q->image);q->next = NULL;p->next = q;p = q;}return head;
}void sumNode(Node *head)
{Node *newNode = (Node*)malloc(sizeof(Node));Node *p = head->next;Node *q;newNode->real = 0;newNode->image = 0;newNode->next = NULL;while (p != NULL){newNode->real += p->real;newNode->image += p->image;q = p;p = p->next;free(q);}printf("%d+%di\n",newNode->real,newNode->image);return newNode;
}int main(void)
{Node *head;head = createNode();sumNode(head);return 0;
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/70266.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/70266.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/70266.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

STM32 ADC介紹(硬件原理篇)

目錄 背景 AD轉換器 采樣與保持 量化 編碼 AD轉換器轉換原理 DA轉換原理 AD轉換原理 1.逐次逼近型AD轉換器 2.并聯比較型AD轉換器 編碼器 同步D觸發器和邊沿D觸發器 基本RS觸發器 同步RS觸發器 同步D觸發器 邊沿型D觸發器&#xff08;維持-阻塞D觸發器&#xff…

公網遠程家里局域網電腦過程詳細記錄,包含設置路由器。

由于從校內遷居小區,校內需要遠程控制訪問小區內個人電腦,于是早些時間剛好自己是電信寬帶,可以申請公網ipv4不需要花錢,所以就打電話直接申請即可,申請成功后訪問光貓設備管理界面192.168.1.1,輸入用戶名密碼登錄超管(密碼是網上查下就有了)設置了光貓為橋接模式,然后…

流行編程語言全解析:優勢、應用與短板

Python&#xff1a; 優勢 Python 以其簡潔、易讀的語法聞名&#xff0c;新手能快速上手。豐富的庫和框架&#xff0c;能極大地提高開發效率。 適用領域 數據科學與分析&#xff1a;處理和分析大規模數據集&#xff0c;進行數據可視化。典型示例&#xff1a;Google 用 Pytho…

統信服務器操作系統V20 1070A 安裝docker新版本26.1.4

應用場景&#xff1a; 硬件/整機信息&#xff1a;x86平臺、深信服超融合平臺 OS版本信息&#xff1a;統信V20 1070a 1.獲取docker二進制包 鏈接: https://pan.baidu.com/s/1SukBlra0mQxvslTfFakzGw?pwd5s5y 提取碼: 5s5y tar xvf docker-26.1.4.tgz groupadd docker ch…

在 Vue 3 中使用 Lottie 動畫:實現一個加載動畫

在現代前端開發中&#xff0c;動畫是提升用戶體驗的重要元素之一。Lottie 是一個流行的動畫庫&#xff0c;它允許我們使用 JSON 文件來渲染高質量的動畫。本文將介紹如何在 Vue 3 項目中集成 Lottie 動畫&#xff0c;并實現一個加載動畫效果。 如果對你有幫助請幫忙點個&#x…

【Spring】Spring配置文件

目錄 ?什么是配置文件&#xff1f; 配置文件的作用 SpringBoot配置文件 配置文件格式 配置文件的優先級 properties配置文件說明 properties基本語法 讀取配置文件 properties缺點 yml配置文件說明 yml基本語法 使用yml連接數據庫 yml配置不同數據類型及null 注意…

藍橋杯篇---實時時鐘 DS1302

文章目錄 前言特點簡介1.低功耗2.時鐘/日歷功能3.32字節的額外RAM4.串行接口 DS1302 引腳說明1.VCC12.VCC23.GND4.CE5.I/O6.SCLK DS1302 寄存器1.秒寄存器2.分鐘寄存器3.小時寄存器4.日寄存器5.月寄存器6.星期寄存器7.年寄存器8.控制寄存器 DS1302 與 IAP25F2K61S2 的連接1.CE連…

Dubbo:高效的分布式服務框架

引言 在當今互聯網應用的快速發展中&#xff0c;微服務架構已經成為一種主流的設計模式&#xff0c;它將一個大型單體應用拆分成多個小型、松耦合的服務。Dubbo 作為一款由阿里巴巴開源的 RPC 服務框架&#xff0c;專門為解決分布式系統中服務通信和治理的問題而設計。本文將深…

Visual Studio Code使用ai大模型編成

1、在Visual Studio Code搜索安裝roo code 2、去https://openrouter.ai/settings/keys官網申請個免費的配置使用

【Javascript Day18】

目錄 標簽事件綁定的屬性參數 阻止默認行為 dialog的實現及組織冒泡&#xff08;捕獲&#xff09;傳遞 基于冒泡的事件委托 鍵盤事件的事件源對象信息 JS的自動觸發操作 標簽事件綁定的屬性參數 <!-- 標簽上的事件綁定&#xff0c;事件源對象通過 關鍵字event傳遞 --…

解鎖機器學習核心算法 | 支持向量機:機器學習中的分類利刃

一、引言 在機器學習的龐大算法體系中&#xff0c;有十種算法被廣泛認為是最具代表性和實用性的&#xff0c;它們猶如機器學習領域的 “十大神器”&#xff0c;各自發揮著獨特的作用。這十大算法包括線性回歸、邏輯回歸、決策樹、隨機森林、K - 近鄰算法、K - 平均算法、支持向…

玩客云 IP查找

1.玩客云使用靜態IP在不同網段路由器下不能使用&#xff0c;動態不好找IP地址 1.1使用python3 實現自動獲取發送 import requests import os import socket# 從環境變量獲取 PushPlus 的 token 和群組編碼 PUSH_PLUS_TOKEN os.getenv("PUSH_PLUS_TOKEN") PUSH_PLU…

Linux(Centos 7.6)命令詳解:cat

1.命令作用 將文件或標準輸入連接到標準輸出(Concatenate FILE(s), or standard input, to standard output)&#xff0c; 即將文件內容輸出到屏幕上&#xff0c;或者將多個文件合并成一個文件。 2.命令語法 Usage: cat [OPTION]... [FILE]... 3.參數詳解 OPTION: -A, -…

深入解析Qt事件循環

在Qt開發中&#xff0c;QApplication::exec()這行代碼是每個開發者都熟悉的“魔法咒語”。為什么GUI程序必須調用它才能響應操作&#xff1f;為何耗時操作會導致界面凍結&#xff1f;本文將以事件循環為核心&#xff0c;揭示Qt高效運轉的底層邏輯&#xff0c;探討其設計哲學與最…

Hive增量遷移方案與實操PB級

客戶一共1PB數據&#xff0c;每天新增10T&#xff0c;有些表只保留3天。 需要客戶提供&#xff1a; a.tbl_size(大小GB) a.last_mtime(最新更新時間) a.tbl_ttl(保留時間) b.last_part_dt(分區值) b.last_part_size(最新分區大小) t_day(表更新規律,t幾) 因為目前…

未來游戲:當人工智能重構虛擬世界的底層邏輯

未來游戲&#xff1a;當人工智能重構虛擬世界的底層邏輯 在《賽博朋克2077》夜之城的霓虹燈下&#xff0c;玩家或許已經注意到酒吧里NPC開始出現微表情變化&#xff1b;在《艾爾登法環》的開放世界中&#xff0c;敵人的戰術包抄逐漸顯露出類人智慧。這些細節預示著游戲產業正站…

React中如何處理高階組件中的錯誤

在 React 高階組件中處理錯誤是確保應用程序健壯性和穩定性的重要環節。以下是一些處理高階組件中錯誤的常見方法&#xff1a; 1. 捕獲渲染時的錯誤 在高階組件中&#xff0c;渲染過程可能會因為各種原因&#xff08;如 props 數據格式錯誤、組件內部邏輯異常等&#xff09;拋…

deepseek-v3在阿里云和騰訊云的使用中的差異

隨著deepseek在各大云商上線&#xff0c;試用了下阿里云和騰訊云的deepseek服務&#xff0c;在回答經典數學問題9.9和9.11誰大時&#xff0c;發現還是有差異的。將相關的問題記錄如下。 1、問題表現 筆者使用的openai的官方sdk go-openai。 因本文中測驗主要使用阿里云和騰訊…

寶塔面板開始ssl后,使用域名訪問不了后臺管理

寶塔面板后臺開啟ssl訪問后&#xff0c;用的證書是其他第三方頒發的證書 再使用 域名/xxx 的形式&#xff1a;https://域名:xxx/xxx 訪問后臺&#xff0c;結果出現如下&#xff0c;不管使用 http 還是 https 的路徑訪問都進不后臺管理 這個時候可以使用 https://ip/xxx 的方式來…

開發板部署|RK3588部署DeepSeek-1.5B

前言 在 RK3588 上部署大模型可以顯著提升計算效率、節能、加速推理過程&#xff0c;并實現本地化推理&#xff0c;適合各種邊緣計算應用&#xff0c;如智能設備、自動駕駛、工業機器人、健康監測等領域。此外&#xff0c;RK3588 配備了強大的 NPU&#xff08;神經網絡處理單元…