數據結構--數組實現線性表

線性表:由同類型數據元素構成的有序序列的線性結構

編譯環境:Dev-C++

結構實現:

struct LNode {ElementType Data[MAXSIZE];int last;
};

主要操作函數:
List MakeEmpty();//初始化一個空表ElementType FindKth(int k, List L);//根據位序k,返回相應的元素int Find(ElementType x, List L);//在線性表中查找x的第一次出現的位置void Insert(ElementType x, int i, List L);//在位序i前新插入一個新元素xvoid Delete(int i, List L);//刪除指定位序i的元素int Length(List L);//返回線性表L的長度nvoid Show(List L);//輸出線性表中的所有數據void Destroy(List L);//銷毀線性表
測試程序以及相關函數的實現:
#include<stdio.h>
#include<stdlib.h>#define MAXSIZE 20
typedef int ElementType;struct LNode {ElementType Data[MAXSIZE];int last;
};typedef struct LNode *List;List MakeEmpty();//初始化一個空表ElementType FindKth(int k, List L);//根據位序k,返回相應的元素int Find(ElementType x, List L);//在線性表中查找x的第一次出現的位置void Insert(ElementType x, int i, List L);//在位序i前新插入一個新元素xvoid Delete(int i, List L);//刪除指定位序i的元素int Length(List L);//返回線性表L的長度nvoid Show(List L);//輸出線性表中的所有數據void Destroy(List L);//銷毀線性表int main() {int Num;int i;ElementType x;List L;printf("開始測試\n");printf("初始化一個空表...\n");L = MakeEmpty();if (L) {printf("初始化成功...\n");}printf("為線性表補充數據...\n");scanf("%d", &Num);for (i = 0; i < Num; i++) {scanf("%d", &x);L->Data[i]=x;L->last++;}printf("線性表數據:\n");Show(L);printf("查找數據...\n");printf("第二個數據是:%d\n", FindKth(2,L));printf("數字3的位置是:%d", Find(3, L));printf("刪除第四個數據...\n");Delete(4, L);printf("線性表數據:\n");Show(L);printf("在位序四之前插入數據100:...\n");Insert(100,4,L);Show(L);printf("銷毀線性表:...\n");Destroy(L);system("pause");return 0;
}List MakeEmpty() {List L;L = (List)malloc(sizeof(struct LNode));//if (L = NULL) {//printf("申請內存出錯!");//exit(0);//}L->last = -1;return L;
}ElementType FindKth(int k, List L) {if (k<1 || k>L->last+1) {printf("位序不正確!\n");return -1;}else {return L->Data[k - 1];}
}int Find(ElementType x, List L) {int i = 0;while (i <= L->last&&L->Data[i] != x)i++;if (i > L->last) {printf("未找到相關數據\n");return -1;}return i;
}void Insert(ElementType x, int i, List L) {int j;if (L->last == MAXSIZE - 1) {printf("表滿!\n");return;}else if (i < 1 || i>L->last + 2) {printf("位序不合法!\n");return;}for (j = L->last; j >=i - 1; j--) {L->Data[j + 1] = L->Data[j];}L->Data[i - 1] = x;L->last++;
}void Delete(int i, List L) {int j;if (L->last < 0) {printf("空表!");return;}else if (i<1 || i>L->last + 1) {printf("位序不合法!\n");return;}for (j = i - 1; j < L->last; j++) {L->Data[j] = L->Data[j + 1];}L->last--;
}int Length(List L) {return L->last + 1;
}void Show(List L) {int i;printf("線性表長度為:%d\n", Length(L));for (i = 0; i <= L->last; i++) {printf("%d:%d\n", i, L->Data[i]);}
}void Destroy(List L) {L->last = -1;free(L);
}


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

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

相關文章

Codeforces Round #241 (Div. 2) A. Guess a number!

題目鏈接 題意 &#xff1a; 就是猜數游戲&#xff0c;根據給定的操作&#xff0c;讓你輸出一個符合條件的。 思路 &#xff1a; 這個題好玩兒&#xff0c;設置兩個變量&#xff0c;一個找符合條件的數的上限&#xff0c;一個找下限&#xff0c;再判斷一下。 1 #include <st…

php中嵌套調用的原理,嵌套調用

## 嵌套調用- 模塊與模塊之間的相互調用(相對路徑)- 項目和項目之間的相互調用(絕對路徑)- 也可以寫一個通用模塊就可以大面積使用&#xff0c;減少代碼維護成本- 或許可以實現一些神奇的效果#### 示例代碼設置文件/html/www/demo/tpl/tpl.blade.php內容如下~~~這是最頂端模塊{…

SET-UID程序漏洞實驗

20125102 一、實驗描述 Set-UID 是Unix系統中的一個重要的安全機制。當一個Set-UID程序運行的時候&#xff0c;它被假設為具有擁有者的權限。例如&#xff0c;如果程序的擁有者是root&#xff0c;那么任何人運行這個程序時都會獲得程序擁有者的權限。Set-UID允許我們做許多很有…

統計文件中有多少個單詞amp;c語言實現

假設文件中的單詞都是字母的組合&#xff0c;且單詞間用空格或者“."區分。實驗環境&#xff1a;Dev-C#include<stdio.h> #include<stdlib.h>int main(){FILE *fp;int i;int fr;long fsize;int word0;int sum0;char filename[20];char *buffer;printf("要…

oracle mul,匯編語言乘指令 MUL、IMUL的具體使用

MUL: 無符號乘;影響 OF、CF 標志位;指令格式:;MUL r/m ;參數是乘數;如果參數是 r8/m8, 將把 AL 做乘數, 結果放在 AX;如果參數是 r16/m16, 將把 AX 做乘數, 結果放在 EAX;如果參數是 r32/m32, 將把 EAX 做乘數, 結果放在 EDX:EAX當乘積的高半部分(AH、DX、EDX、RDX)中存有結…

java實驗二

課程&#xff1a;Java程序設計 班級&#xff1a; 1352 姓名&#xff1a;黃衛   學號&#xff1a;20135221 成績&#xff1a; 指導教師&#xff1a;婁嘉鵬 實驗日期&#xff1a;2015.05.05 實驗密級&#xff1a; 預…

兩數之和c語言實現

題目描述&#xff1a;給定一個整數數組和一個目標值&#xff0c;找出數組中和為目標值的兩個數。你可以假設每個輸入只對應一種答案&#xff0c;且同樣的元素不能被重復利用。示例:給定 nums [2, 7, 11, 15], target 9因為 nums[0] nums[1] 2 7 9 所以返回 [0, 1]解題思路…

【Linux】正確的關機方法

1&#xff09;shutdown命令 我們較常使用的是shutdown這個命令&#xff0c;這個命令可以安全地關閉或重啟Linux系統&#xff0c;它在系統關閉之前給系統上的所有登錄用戶提示一條警告信息。該命令還允許用戶指定一個時間參數&#xff0c;可以是一個精確的時間&#xff0c;也可以…

oracle 存儲過程寫文件,Oracle寫本地文件

Oracle寫本地文件是指寫到運行Oracle的主機上&#xff0c;而不是運行該腳本的機器上。說起來有點拗口&#xff0c;實際上就是無論在哪里執行這個過程&#xff0c;生成的文件始終都是在服務器上的。下面過程實現了這個功能&#xff1a;logdir是指文件存放路徑。有Oracle的direct…

兩數相加c語言實現

給定兩個非空鏈表來表示兩個非負整數。位數按照逆序方式存儲&#xff0c;它們的每個節點只存儲單個數字。將兩數相加返回一個新的鏈表。你可以假設除了數字 0 之外&#xff0c;這兩個數字都不會以零開頭。示例&#xff1a;輸入&#xff1a;(2 -> 4 -> 3) (5 -> 6 -&g…

jQuery獲取Select選擇的Text和Value

一、 jQuery獲取Select選擇的Text和Value:語法解釋&#xff1a; $("#select_id").change(function(){//code...}); //為Select添加事件&#xff0c;當選擇其中一項時觸發varcheckText$("#select_id").find("option:selected").tex…

jquery實現導航欄鼠標點擊后實行背景高亮,點擊離開恢復(超級簡單!!!!)...

昨天才寫了一個方法&#xff0c;今天發現一個更簡單的。 html&#xff1a; <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title> </head> <body> <div class"dianji&qu…

Linux怎么處理binray文件,Linux下如何反匯編arm raw binary文件

有一個arm elf文件經過objcopy -O binary 命令處理生成bin文件進行反匯編:指令1&#xff1a;arm_v5t_le-objdump -b binary -m armv5te -D u-boot.bin|head指令2&#xff1a;arm-linux-objdump -D -b binary test.bin --architecturearm > /tmp/raw.txthttp://linux.chi…

putty連虛擬機中Linux出現Access Denied

環境&#xff1a;VMwarekali Linux出現這個問題&#xff0c;肯定是你想嘗試直接通過使用root賬戶連接你的linux&#xff0c;這樣肯定是不行的&#xff0c;why&#xff1f;為了保證服務器安全&#xff0c;幾乎所有的服務器都禁止了超級用戶直接登錄系統&#xff0c;而是通過普通…

Floyd算法應用-醫院選址問題

1)問題描述 n個村莊之間的交通圖可以用有向網圖來表示&#xff0c;圖中邊<vi, vj>上的權值表示從村莊i到村莊j的道路長度。現在要從這n個村莊中選擇一個村莊新建一所醫院&#xff0c;問這所醫院應建在哪個村莊&#xff0c;才能使所有的村莊離醫院都比較近&#xff1f; 2)…

linux ls 命令排序,如何在Linux中使用ls命令按大小對所有文件進行排序

ls命令是列出目錄內容的最流行且非常有用的命令。 在本文中&#xff0c;我們將解釋如何使用ls sort選項按大小列出目錄內容。1)按大小列出目錄中的文件(排序)要列出具有大小排序的特定目錄的內容&#xff0c;我們將使用-lS選項和ls命令。 它將在頂部顯示最大的文件。[linuxidcl…

C?#?獲?取?當?前?時?間?的?各?種?格?式

C#獲取當前時間的各種格式 DateTime.Now.ToShortTimeString() DateTime dt DateTime.Now; dt.ToString();//2005-11-5 13:21:25 dt.ToFileTime().ToString();//127756416859912816 dt.ToFileTimeUtc().ToString();//127756704859912816 dt.ToLocalTime().ToString(…

基于tcp connect的端口掃描程序

原理&#xff1a;connect()函數用于對于每一個感興趣的目標計算機的端口進行連接&#xff0c;如果該端口處于偵聽狀態&#xff0c;那么connect()就會成功&#xff0c;即沒有提供服務。如果對于每一個目標端口以串行的方式使用單獨的connect()調用&#xff0c;需要較長的時間&am…

UIScrollView

一、UIScrollView 1.常見屬性 property(nonatomic) CGPoint contentOffset; // 記錄UIScrollView滾動的位置 property(nonatomic) CGSize contentSize; // 內容尺寸&#xff08;能滾動的范圍&#xff09; property(nonatomic) UIEdgeInsets contentInset; // 額外增加的滾動區域…

linux如何運行多個硬盤,一個硬盤如何裝兩個Linux

1個硬盤已安裝Fedora 8 Linux系統&#xff0c;并安裝grub引導管理程序&#xff0c;現要在這個硬盤的空閑分區中安裝Fedora 9&#xff0c;操作如下&#xff1a;1.將Fedora-9-i386-DVD.iso文件放到一個Windows Fat32分區((hd0,4))的根目錄&#xff0c;將這個iso文件中的isolinux目…