1.創建單項鏈表

# include <stdio.h>
# include <malloc.h>
# include <stdlib.h>typedef struct Node{int data;//數據域struct Node *pNext;//指針域}NODE, *PNODE;
//NODE等價于struct Node
//PNOD等價于struct Node *
//函數聲明PNODE create_list(void);
void traverse_list(PNODE pHead);int main(void){PNODE pHead = NULL;//等價于 struct Node * pHead =NuLL;//生成鏈表pHead = create_list();//create_list()這個函數的功能,創建一個非循環單鏈表,并將該鏈表的頭結點的地址賦值給pHead//輸出鏈表,也就是遍歷鏈表traverse_list(pHead);//traverse表示遍歷的意思return 0;
}PNODE create_list(void){//返回值是一個地址PNODEint len;//用來存放有效結點的個數int i;int val;//用來臨時存放用戶輸入的結點的值/*首先一定要先生成一個臨時的頭結點pHead分配了一個不存放有效數據的頭結點,pHead就指向了頭結點*/PNODE pHead = (PNODE)malloc(sizeof(NODE));//返回到是結點本身的數據類型所以說是NODEif(pHead == NULL){printf("分配失敗,程序終止");exit(-1);}PNODE pTail = pHead;//把pHead的值賦值給pTail,即pHead跟pTail就都指向了頭結點pTail->pNext = NULL;//然后把頭指針給清空,這樣就會導致pTail永遠指向尾結點printf("請輸入您需要生成的鏈表節點的個數: len = ");scanf("%d",&len);for(i=0;i<len;++i){printf("請輸入第%d個結點的值:",i+1);scanf("%d",&val);//現在的val已經存放了結點的值,但是真正的結點并沒有生成,因為真正的結點是兩部分即:指針域和數據域PNODE pNew = (PNODE)malloc(sizeof(NODE));if(pNew == NULL){printf("分配失敗,程序終止");exit(-1);}pNew->data = val;//把pNew生成一個臨時的結點,然后將接收到的val這個結點存放到這個數據域里面去pTail->pNext = pNew;//假設pTail永遠指向尾結點,把pNew掛在尾結點的后面pNew->pNext = NULL;//然后新結點變成尾結點pTail = pNew;//然后pTail就指向尾結點了//關鍵是然后生成這個pTail/*pHead->pNext = pNew;//然后再把臨時結點放到pHead后面pNew->pNext = NUILL;//然后再將臨時結點的指針域給清空,因為臨時結點已經變成最后一個結點啦*/}return pHead;
}
void traverse_list(PNODE pHead){//遍歷的時候也不需要返回值,但是一定需要參數PNODE p =pHead->pNext;//p指向第一個有效結點/*p的值此時有可能為空,如果這個鏈表為空,那么這個鏈表只有一個結點就是所謂的頭結點鏈表即便是空了,也會有一個頭結點的,然后再用pHead指向鏈表為空即:鏈表中只有一個頭結點,沒有有效的結點*/while(p != NULL){//當p不為空的時候也就是p已經指向了一個結點了,只有p不為空就一直輸出即可printf("%d ",p->data);p = p->pNext;}printf("\n");return ;}/*void f(){int i =10;//f()調用完畢之后,i的值就會消失int * p = (int *)malloc(100);//當f()調用完畢之后,p本身的內存就會被釋放掉,因為p是靜態的,但是后面分配的100個字節還會存在}*/

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

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

相關文章

python 日本就業_日本的繪圖標志 Python中的圖像處理

python 日本就業Read basics of the drawing/image processing in python: Drawing flag of Thailand 閱讀python中繪圖/圖像處理的基礎知識&#xff1a; 泰國的繪圖標志 The national flag of Japan is a rectangular white banner bearing a crimson-red disc at its center…

[windows phone 7 ]查看已安裝程序GUID

首先介紹下wp7RootToolsSDK,這個功能相當強大&#xff0c;適合研究wp7高級功能。 它支持File&#xff0c;Register操作&#xff0c;比之前的COM調用要簡單&#xff0c;方便。 功能:查看已安裝程序的guid 開發心得: 用的是mozart,rom多&#xff0c;刷機吧&#xff0c;最麻煩的是…

FreeRTOS任務掛起和恢復

任務掛起&#xff1a;暫停某個任務的執行 任務恢復&#xff1a;讓暫停的任務繼續執行 通過任務掛起和恢復&#xff0c;可以達到讓任務停止一段時間后重新運行。 相關API函數&#xff1a; vTaskSuspend void vTaskSuspend( TaskHandle_t xTaskToSuspend );xTaskToSuspend &am…

向oracle存儲過程中傳參值出現亂碼

在頁面中加入<meta http-equiv"Content-Type" content"text ml;charsetUTF-8"/>就可以解決這一問題 適用情況&#xff1a; 1.中文 2.特殊符號 轉載于:https://www.cnblogs.com/GoalRyan/archive/2009/02/16/1391348.html

Scala程序將多行字符串轉換為數組

Scala | 多行字符串到數組 (Scala | Multiline strings to an array) Scala programming language is employed in working with data logs and their manipulation. Data logs are entered into the code as a single string which might contain multiple lines of code and …

SQL 異常處理 Begin try end try begin catch end catch--轉

SQL 異常處理 Begin try end try begin catch end catch 總結了一下錯誤捕捉方法:try catch ,error, raiserror 這是在數據庫轉換的時候用的的異常處理, Begin TryInsert into SDT.dbo.DYEmpLostTM(LogDate,ProdGroup,ShiftCode,EmployeeNo,MONo,OpNo,OTFlag,LostTypeID,OffStd…

FreeRTOS中斷配置與臨界段

Cortex-M中斷 中斷是指計算機運行過程中&#xff0c;出現某些意外情況需主機干預時&#xff0c;機器能自動停止正在運行的程序并轉入處理新情況的程序&#xff08;中斷服務程序&#xff09;&#xff0c;處理完畢后又返回原被暫停的程序繼續運行。Cortex-M內核的MCU提供了一個用…

vector向量容器

一、vector向量容器 簡介&#xff1a; Vector向量容器可以簡單的理解為一個數組&#xff0c;它的下標也是從0開始的&#xff0c;使用時可以不用確定大小&#xff0c;但是它可以對于元素的插入和刪除&#xff0c;可以進行動態調整所占用的內存空間&#xff0c;它里面有很多系統…

netsh(二)

netsh 來自微軟的網絡管理看家法寶很多時候&#xff0c;我們可能需要在不同的網絡中工作&#xff0c;一遍又一遍地重復修改IP地址是一件比較麻煩的事。另外&#xff0c;系統崩潰了&#xff0c;重新配置網卡等相關參數也比較煩人&#xff08;尤其是無線網卡&#xff09;。事實上…

java uuid靜態方法_Java UUID getLeastSignificantBits()方法與示例

java uuid靜態方法UUID類getLeastSignificantBits()方法 (UUID Class getLeastSignificantBits() method) getLeastSignificantBits() method is available in java.util package. getLeastSignificantBits()方法在java.util包中可用。 getLeastSignificantBits() method is us…

Google C2Dm相關文章

Android C2DM學習——云端推送&#xff1a;http://blog.csdn.net/ichliebephone/article/details/6591071 Android C2DM學習——客戶端代碼開發&#xff1a;http://blog.csdn.net/ichliebephone/article/details/6626864 Android C2DM學習——服務器端代碼開發&#xff1a;http…

FreeRTOS的列表和列表項

列表和列表項 列表 列表是FreeRTOS中的一個數據結構&#xff0c;概念上和鏈表有點類型&#xff0c;是一個循環雙向鏈表&#xff0c;列表被用來跟蹤FreeRTOS中的任務。列表的類型是List_T&#xff0c;具體定義如下&#xff1a; typedef struct xLIST {listFIRST_LIST_INTEGRI…

string基本字符系列容器

二、string基本字符系列容器 簡介&#xff1a;C語言只提供了一個char類型來處理字符&#xff0c;而對于字符串&#xff0c;只能通過字符串數組來處理&#xff0c;顯得十分不方便。CSTL提供了string基本字符系列容器來處理字符串&#xff0c;可以把string理解為字符串類&#x…

正則表達式(一)

正則表達式概述 1.1什么是正則表達式&#xff1f; 正則表達式(Regular Expression)起源于人類神經系統的早期研究。神經生理學家Warren McCulloch和Walter Pitts研究出一種使用數學方式描述神經網絡的方法。1956年&#xff0c;數學家Stephen Kleene發表了一篇標題為“神經…

42.有“舍”才有“得”

大干世界&#xff0c;萬種誘惑&#xff0c;什么都想要&#xff0c;會累死你&#xff0c;該放就放&#xff0c;該舍就舍。人必須先有所舍&#xff0c;才能有所得&#xff0c;舍如同種子撒播出去&#xff0c;轉了一圈&#xff0c;又帶了一大群子子孫孫回來。“舍”永遠在“得”的…

Java StringBuilder codePointCount()方法與示例

StringBuilder類codePointCount()方法 (StringBuilder Class codePointCount() method) codePointCount() method is available in java.lang package. codePointCount()方法在java.lang包中可用。 codePointCount() method is used to count the number of Unicode code point…

FreeRTOS時間管理

在使用FreeRTOS的過程中&#xff0c;我們通常會在一個任務函數中使用延時函數對這個任務延時&#xff0c;當執行延時函數的時候就會進行任務切換&#xff0c;并且此任務就會進入阻塞太&#xff0c;直到延時完成&#xff0c;任務重新進入就緒態。延時函數舒屬于FreeRTOS的時間管…

set和multiset集合容器

三、①set集合容器 簡介&#xff1a;set集合的目的就是為了快速檢索。set集合容器實現了紅黑樹的平衡二叉檢索樹的數據結構。set集合里面不允許有重復的元素出現&#xff1b;使用set容器前&#xff0c;需要在程序的頭文件中聲明 #include < set >。 函數方法總結&#…

javascript獲取select的值全解

獲取顯示的漢字 document.getElementById("bigclass").options[window.document.getElementById("bigclass").selectedIndex].text 獲取數據庫中的id window.document.getElementById("bigclass").value 獲取select組分配的索引id window.docume…

Java File類void deleteOnExit()方法(帶示例)

文件類void deleteOnExit() (File Class void deleteOnExit()) This method is available in package java.io.File.deleteOnExit(). 軟件包java.io.File.deleteOnExit()中提供了此方法。 This method is used to delete the file or directory when the virtual machine termi…