日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

数据结构--数组实现线性表

發布時間:2023/12/1 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数据结构--数组实现线性表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

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

編譯環境: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); }

總結

以上是生活随笔為你收集整理的数据结构--数组实现线性表的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。