實驗報告: 線性表的基本操作及應用

實驗報告: 線性表的基本操作及應用

實驗內容

基本要求:
(1)實現單鏈表的創建;(2)實現單鏈表的插入;(3)實現單鏈表的刪除
(4)實現單鏈表的查找;(5)實現單鏈表的顯示;

/*Name:Linklist operation.cpp Author:XDate:2020/3/13 Description: 線性表的基本操作及應用
*/
#include<stdio.h>
#include<stdlib.h>   //分配數據 
#define ERROR 0;
#define OK 1;typedef int ElemType;
typedef int status;typedef struct LNode
{ElemType data;struct LNode *next;
}LNode,*LinkList;//建立線性表LA   ,頭插法 
status CreatList_LA(LinkList &LA,int n)
{LNode *p;int i;LA=(LinkList)malloc(sizeof(LNode));LA->next=NULL;for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);p->next=LA->next;LA->next=p;}return OK;	
}//建立線性表LB 
status CreakList_LB(LinkList &LB,int n)
{LNode *p;status i;LB=(LinkList)malloc(sizeof(LNode));LB->next=NULL;for(i=n;i>0;--i){p=(LinkList)malloc(sizeof(LNode));scanf("%d",&p->data);p->next=LB->next;LB->next=p;}return OK;	
}//在第i個結點前插入e 
status ListInsert_LA(LinkList &LA,status i,ElemType e)
{LNode *p,*s;   //等同于 LinkList p,s;status j;p=LA;j=0;while(p&&j<i-1){p=p->next;++j;   //計數器 }if(!p||j>i-1)return ERROR;s=(LinkList)malloc(sizeof(LNode));s->data=e;s->next=p->next;p->next=s;return OK;
}//刪除第i個結點,值代入e 
status ListDelete_LA(LinkList &LA,int i,ElemType &e) 
{LNode *p,*q;status j;p=LA;j=0;while(p||j<i-1){p=p->next;++j;}if(p->next==NULL||j>i-1)return  ERROR;q=p->next;p->next=q->next;e=q->data;								free(q);return OK;
} //查找到第i個元素,用e返回
status GetElem_LA(LinkList LA,int i,ElemType e)
{   LNode *p;p=LA;status j;j=0;while(p&&j<i-1){p=p->next;++j;}if(!p||j>i)return ERROR;e=p->data;return OK;} //合并線性表LA和LB
status MergeList_L(LinkList &LA,LinkList &LB,LinkList &LC)
{LNode *pa,*pb,*pc;pa=LA->next;pb=LB->next;LC=pc=LA;while(pa&&pb){if(pa->data<=pb->data) {pc->next=pa;pc=pa;pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}pc->next=pa?pa:pb;} free(LB);}//輸出鏈表
status printfList_L(LinkList &L) 
{LNode *p;int i;p=L->next;while(p){printf("%d ",p->data);p=p->next;}
}int main()
{ElemType e ;LinkList LA,LB,LC;status i,n;printf("輸入向所創建LA鏈表中插入幾個結點,n為:");scanf("%d",&n); printf("輸入鏈表的結點數據:");CreatList_LA(LA,n) ;printf("輸入向所創建LB鏈表中插入幾個結點,n為:");scanf("%d",&n); printf("輸入鏈表的結點數據:");CreakList_LB(LB,n); printf("輸出鏈表LA為:");printfList_L(LA);printf("\n輸出鏈表LB為:");printfList_L(LB);printf("\n輸入在鏈表第幾個位置插入結點,i,e為:");scanf("%d%d",&i,&e);ListInsert_LA(LA,i,e);printf("\n插入后使出的鏈表為:");printfList_L(LA);printf("\n輸入在鏈表第幾個位置刪除結點,i為:"); scanf("%d",&i);ListDelete_LA(LA,i,e);printf("\n刪除后的鏈表LA為:");printfList_L(LA);printf("刪除的第%d個結點所儲存的元素為:%f",i,e);printf("\n輸入想查找第幾個元素結點,i為:");scanf("%d",&i);GetElem_LA(LA,i,e);printf("\n查找到的第i個元素為:");printf("%d",e);printf("\n合并之后的鏈表為:");MergeList_L(LA,LB,LC);printfList_L(LC);return OK;
}

【記得引用符&與變量名稱間有空格】
【定義的函數數據類型要與其中數據的數據類型一值】

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

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

相關文章

TVM:源碼編譯安裝

TVM&#xff1a;Linux源碼編譯安裝 筆者環境&#xff1a; OS&#xff1a;Ubuntu 18.04 CMake&#xff1a;3.10.2 gcc&#xff1a;7.5.0 cuda&#xff1a;11.1 編譯安裝過程總覽 本文將簡介 tvm 的編譯安裝過程&#xff0c;包含兩個步驟&#xff1a; 通過C代碼構建共享庫設置相…

第2章線性表的基本使用及其cpp示例(第二章匯總,線性表都在這里)

2.1線性表的定義和特點 【類型定義&#xff1a; *是n個元素的有限序列 *除了第一個元素沒有直接前驅和最后一個沒有直接后驅之外&#xff0c;其余的每個元素只有一個直接前驅和直接后驅&#xff1b; &#xff08;a1,a2…an&#xff09; 【特征&#xff1a; *有窮性&#xff1…

TVM:通過Python接口(AutoTVM)來編譯和優化模型

TVM&#xff1a;通過Python接口&#xff08;AutoTVM&#xff09;來編譯和優化模型 上次我們已經介紹了如何從源碼編譯安裝 tvm&#xff0c;本文我們將介紹在本機中使用 tvm Python 接口來編譯優化模型的一個demo。 TVM 是一個深度學習編譯器框架&#xff0c;有許多不同的模塊…

TVM:在樹莓派上部署預訓練的模型

TVM&#xff1a;在樹莓派上部署預訓練的模型 之前我們已經介紹如何通過Python接口&#xff08;AutoTVM&#xff09;來編譯和優化模型。本文將介紹如何在遠程&#xff08;如本例中的樹莓派&#xff09;上部署預訓練的模型。 在設備上構建 TVM Runtime 首先我們需要再遠程設備…

2.2線性表的順序表

2.2.1線性表的順序表示和實現------順序映像 【順序存儲】在【查找時】的時間復雜度為【O(1)】&#xff0c;因為它的地址是連續的&#xff0c;只要知道首元素的地址&#xff0c;根據下標可以很快找到指定位置的元素 【插入和刪除】操作由于可能要在插入前或刪除后對元素進行移…

TVM:交叉編譯和RPC

TVM&#xff1a;交叉編譯和RPC 之前我們介紹了 TVM 的安裝、本機demo和樹莓派遠程demo。本文將介紹了在 TVM 中使用 RPC 進行交叉編譯和遠程設備執行。 通過交叉編譯和 RPC&#xff0c;我們可以在本地機器上編譯程序&#xff0c;然后在遠程設備上運行它。 當遠程設備資源有限…

2.3單鏈表的基本使用及其cpp示例

2.3線性表的鏈式表現與實現 2.3.1.1單鏈表 【特點&#xff1a; *用一組任意的存儲單元存儲線性表的數據元素 *利用指針實現用不同相鄰的存儲單元存放邏輯上相鄰的元素 *每個元素ai&#xff0c;除存儲本身信息外&#xff0c;還存儲其直接后繼的元素&#xff08;后一個元素的地址…

TVM:簡介

TVM&#xff1a;簡介概述 Apache TVM 是一個用于 CPU、GPU 和機器學習加速器的開源機器學習編譯器框架。它旨在使機器學習工程師能夠在任何硬件后端上高效地優化和運行計算。本教程的目的是通過定義和演示關鍵概念&#xff0c;引導您了解 TVM 的所有主要功能。新用戶應該能夠從…

2.3.3單鏈表的雙向鏈表

2.3.3雙向鏈表 插入、刪除 指在前驅和后驅方向都能游歷&#xff08;遍歷&#xff09;的線性鏈表 雙向鏈表的每個結點有兩個指針域 【結構】&#xff1a;prior data next 雙鏈表通常采用帶頭結點的循環鏈表形式 可理解為首位相接的數據“圈”&#xff0c;每個結點都可以向前…

nvidia-smi 命令詳解

nvidia-smi 命令詳解 簡介 nvidia-smi - NVIDIA System Management Interface program nvidia smi&#xff08;也稱為NVSMI&#xff09;為來自 Fermi 和更高體系結構系列的 nvidia Tesla、Quadro、GRID 和 GeForce 設備提供監控和管理功能。GeForce Titan系列設備支持大多數…

2.4一元多項式的表示及相加,含cpp算法

2.4一元多項式的表示及相加 n階多項式的表示&#xff1a; n階多項式有n1項 指數按升冪排序 【 優點&#xff1a; 多項式的項數可以動態增長&#xff0c;不存在存儲溢出的問題插入&#xff0c;刪除方便&#xff0c;不移動元素 【表示&#xff1a; 有兩個數據域&#xff0c;一…

TVM:使用Tensor Expression (TE)來處理算子

TVM&#xff1a;使用Tensor Expression (TE)來處理算子 在本教程中&#xff0c;我們將聚焦于在 TVM 中使用張量表達式&#xff08;TE&#xff09;來定義張量計算和實現循環優化。TE用純函數語言描述張量計算&#xff08;即每個表達式都沒有副作用&#xff09;。當在 TVM 的整體…

4-數據結構-串的學習

4.1串類型的定義 1.串&#xff1a;&#xff08;或字符串&#xff09; 串是由多個字符組成的有限序列&#xff0c;記作&#xff1a;S‘c1c2c3…cn’ (n>0) 其中S是串的名字&#xff0c;‘c1c2c3…cn’ 是串值 ci是串中字符 n是串的長度&#xff0c;表示字符的數目 空串&a…

Linux下rm誤刪恢復 extundelete

Linux下rm誤刪恢復 extundelete 誤刪之后要第一時間卸載&#xff08;umount&#xff09;該分區&#xff0c;或者以只讀的方式來掛載&#xff08;mount&#xff09;該分區&#xff0c;否則覆寫了誰也沒辦法恢復。如果誤刪除的是根分區&#xff0c;最好直接斷電&#xff0c;進入…

5-數據結構-數組的學習

5.1數組的定義 定義&#xff1a; 由一組類型相同的數據元素構成的有序集合&#xff0c;每個數據元素稱為一個數據元素&#xff08;簡稱元素&#xff09;&#xff0c;每個元素受n&#xff08;n>1&#xff09;個線性關系的約束&#xff0c;每個元素在n個線性關系中的序號i1、…

timm 視覺庫中的 create_model 函數詳解

timm 視覺庫中的 create_model 函數詳解 最近一年 Vision Transformer 及其相關改進的工作層出不窮&#xff0c;在他們開源的代碼中&#xff0c;大部分都用到了這樣一個庫&#xff1a;timm。各位煉丹師應該已經想必已經對其無比熟悉了&#xff0c;本文將介紹其中最關鍵的函數之…

C--數據結構--樹的學習

6.2.1二叉樹的性質 1.二叉樹 性質&#xff1a; 1.若二叉樹的層次從1開始&#xff0c;則在二叉樹的第i層最多有2^(i-1)個結點 2.深度為k的二叉樹最多有2^k -1個結點 &#xff08;k>1&#xff09; 3.對任何一顆二叉樹&#xff0c;如果其葉結點個數為n0,度為2的非葉結點個數…

TVM:使用 Schedule 模板和 AutoTVM 來優化算子

TVM&#xff1a;使用 Schedule 模板和 AutoTVM 來優化算子 在本文中&#xff0c;我們將介紹如何使用 TVM 張量表達式&#xff08;Tensor Expression&#xff0c;TE&#xff09;語言編寫 Schedule 模板&#xff0c;AutoTVM 可以搜索通過這些模板找到最佳 Schedule。這個過程稱為…

TVM:使用 Auto-scheduling 來優化算子

TVM&#xff1a;使用 Auto-scheduling 來優化算子 在本教程中&#xff0c;我們將展示 TVM 的 Auto-scheduling 功能如何在無需編寫自定義模板的情況下找到最佳 schedule。 與基于模板的 AutoTVM 依賴手動模板定義搜索空間不同&#xff0c;auto-scheduler 不需要任何模板。 用…

C語言—sort函數比較大小的快捷使用--algorithm頭文件下

sort函數 一般情況下要將一組數從的大到小排序或從小到大排序&#xff0c;要定義一個新的函數排序。 而我們也可以直接使用在函數下的sort函數&#xff0c;只需加上頭文件&#xff1a; #include<algorithm> using namespace std;sort格式&#xff1a;sort(首元素地址&…