單向鏈表增刪查

来源:https://www.cnblogs.com/tao7/archive/2018/07/20/9343207.html
-Advertisement-
Play Games

#include"stdio.h"#include"stdlib.h"typedef struct node{int e;struct node *next;}*NNode;//初始化 NNode InitList(NNode L){ NNode head=NULL; head=(NNode)mal ...


#include"stdio.h"
#include"stdlib.h"
typedef struct node{
int e;
struct node *next;
}*NNode;
//初始化
NNode InitList(NNode L){
NNode head=NULL;
head=(NNode)malloc(sizeof(node));
if(!head){
return 0;
}
head->next=NULL;
L=head;
return L;
}
//重置
void ClearList(NNode L){
NNode p=NULL;
if(L->next){
p=L->next;
free(L);
}
}

//判空
bool ListEmpty(NNode L){
if(L->next==NULL)
return true;
else return false;
}
//長度
int ListLength(NNode L){
NNode p=NULL;
int count=0;
p=L;
while(p->next){
count++;
p=p->next;
}
return count;
}
//創建n個節點插入頭節點之後
NNode CreatList(NNode L,int n){
NNode p=NULL;
for(int i=0;i<n;i++){
p=(NNode)malloc(sizeof(node));
scanf("%d",&(p->e));
p->next=L->next;
L->next=p;
}
return L;
}
//GetElem獲取
int GetElem(NNode L,int n){
NNode p=NULL,q=NULL;
int j=0;
q=L;
if(q->next&&j<n){
j++;
q=q->next;
if(j+1==n)
return (L->e);
}else{
printf("輸入錯誤");
return 0;
}

}
//獲取指定元素的位置
int LocateElem(NNode L,int e){
int i=0;
NNode p=NULL;
p=L;
while(p->next&&p->e!=e){
p=p->next;
i++;
}
if(!p->next){
printf("查找失敗");
return -1;
}
if(p->e==e)
return i;
}
//輸出
void Out(NNode L){
NNode p;
p=L->next;
while(p)
{
printf("%d",p->e);
p=p->next;
printf("\n");
}
}
//插入
NNode LisetInsert(NNode L,int e,int n){
NNode p=NULL,q=NULL;
int j=1;
q=L;
if(q->next&&j<n){
j++;
q=q->next;
}else{
printf("輸入錯誤");
return L;
}
p= (NNode)malloc(sizeof(node));
p->e=e;
p->next=q->next;
q->next=p;
return L;
}
//刪除指定節點
NNode ListDelete(NNode L,int n){
NNode p=NULL,q=NULL;
int j=0;
q=L;
if(q->next&&j<n-1){
j++;
q=q->next;
}else{
printf("輸入錯誤");
return L;
}

p=q->next;
q->next=p->next;
free(p);
return L;
}
void main(){
int n,m,i,e;
NNode L=NULL;
//printf("是否為空:");
//printf("%d",ListEmpty(L));//

L=InitList(L);//
printf("初始化成功");
//printf("是否為空:");
//printf("%d",ListEmpty(L));//
CreatList(L,5);//
printf("長度為:");
printf("%d\n",ListLength(L));
printf("輸出為");
Out(L);
printf("是否為空:");
printf("%d",ListEmpty(L));//
ListDelete(L,2);//
Out(L);
printf("長度為:");
printf("%d",ListLength(L));
printf("插入後");
LisetInsert(L,4,2);
Out(L);
printf("定位");
m=LocateElem(L,4);
printf("%d",m);
}

//區分typedef struct和struct的區別


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • “Spring”——每一個Javaer開發者都繞不開的字眼,從21世紀第一個十年國內異常活躍的SSH框架,到現在以Spring Boot作為入口粘合了各種應用。Spring現在已經完成了從web入口到微服務架構再到數據處理整個生態,看著現在https://spring.io/projects上長長的 ...
  • @Controller @Controller 註解用於標記在 Java 類上。被 @Controller 標記過的類就是一個 SpringMVC Controller對象。DispatcherServlet 會掃描使用了該註解的類的方法,並檢查對應方法是否有 @RequestMapping 註解標 ...
  • 編寫此文僅為以後可以複習。 最近在自學Java核心技術(很好的書,推薦!!),也是第一次從上面瞭解了goto,或許只是淺層瞭解。 錯誤之處希望大佬們給予批評與建議!!謝謝!!! Java核心技術中就提到過:無限制的使用goto語句確實是導致錯誤的根源,但是有些情況下,偶爾使用goto 跳出迴圈 還是 ...
  • 1、三層架構 表現層 web層(MVC是一個表現層的設計模型) 業務層 service層 持久層 dao層2、三大框架和三層架構的關係(建議學習三大框架的順序:先學習hibernate在學習struts2框架,最後學習spring 框架) hibernate框架:它是一個持久層框架 struts2框 ...
  • 前言 作為一名準備轉行數據分析的小白,我先接觸到的是網路爬蟲學習,每次爬蟲運行都有新的bug收穫,通過不斷debug,終於稍微能爬一些數據了,在此想和大家分享一下~ 私信小編007即可獲取小編精心準備的PDF十套哦! 看看最後一頁搜索結果 。 PS:小技巧,在頁面下部跳轉頁面輸入一個很大的數字,比如 ...
  • 在使用 Spring Cloud 體系來構建微服務的過程中,用戶請求是通過網關(ZUUL 或 Spring APIGateway)以 HTTP 協議來傳輸信息,API 網關將自己註冊為 Eureka 服務治理下的應用,同時也從 Eureka 服務中獲取所有其他微服務的實例信息。搭建 OAuth2 認... ...
  • 封裝將內部細節封裝起來,只暴露外部介面。 比如我們的電視就將複雜的內部線路用外殼封裝起來,只留下外部按鈕或遙控,用戶只需要知道按鈕或遙控的作用就可以,無需明白電視內部是如何工作。 而且封裝也保障了安全性,用戶只能去使用暴露在外部的介面,不能改變內部結構,保障了正常運行。 封裝後,使用者不必知曉複雜的 ...
  • MyLinkList類 1 package List; 2 3 // 單向鏈表 4 public class MyLinkList { 5 private Node root; // 根結點 6 private int size; // 結點個數 7 private int index; // 腳標 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...