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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

数组实现静态表

發布時間:2025/7/14 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 数组实现静态表 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.順序線性表的建立、插入、刪除及查找。

2.具體要求:

(1)建立含n個數據元素的順序表;

(2)可以在線性表的任意合法位置i插入一個數據元素;

(3)可以刪除線性表在任意合法位置i上的一個數據元素;

(4)可以刪除線性表中所有值為e的數據元素,并知道刪除了幾個這樣的元素;

(5)可以查找第i個位置的元素;

(6)可以查找值為e的元素在線性表中的第一個位置i;

(7)可以輸出該表中各元素的值;

(8)可以輸出順序表的長度(即數據元素的個數);

建立工程

Header Files:<SqList.h>

#ifndef SQLIST_H #define SQLIST_H#define MAXSIZE 30 //定義線性表的最大長度typedef int ElemType; //線性表中存放整型元素 typedef struct{ElemType elem[MAXSIZE]; //線性表int length; // length指示當前線性表的長度 }SqList;void initial(SqList &); //初始化線性表 void print(SqList &); //輸出函數 bool insert(SqList &,int,int); //插入元素 bool del(SqList &,int ,int & ); //刪除元素 int locate(SqList ,int ); //查找 #endif

Sourse Flies:

主函數文件:<main.cpp>

#include <stdio.h> #include <SqList.h> void main() {SqList S; //S為一線性表int loc,e,flag=1;char j;bool temp;initial(S); //初始化線性表while(flag) {printf("請選擇:\n");printf("1.顯示所有元素 2.插入一個元素 3.刪除一個元素 4.查找一個元素\n");printf(" 5.退出程序 \n");scanf(" %c",&j);switch(j){case '1':print(S); break; //顯示所有元素case '2':{printf("請輸入要插入的元素(一個字符)和插入位置:\n");printf("格式:位置,整數;例如:1,-2\n");scanf(" %d,%d",&loc,&e); //輸入要插入的元素和插入的位置temp=insert(S,loc,e); //插入if(temp==false) printf("插入失敗!\n"); //插入失敗else {printf("插入成功!\n"); print(S);} //插入成功break;}case '3':{printf("請輸入要刪除元素的位置:");scanf("%d",&loc); //輸入要刪除的元素的位置temp=del(S,loc,e); //刪除if(temp==true) printf("刪除了一個元素:%d\n",e); //刪除成功else printf("該元素不存在!\n"); //刪除失敗 print(S);break;}case '4':{printf("請輸入要查找的元素:");scanf(" %d",&e); //輸入要查找的元素loc=locate(S,e); //定位if(loc!=-1) printf("該元素所在位置:%d\n",loc+1); //顯示該元素位置else printf("%d 不存在!\n",e); //當前元素不存在break;}default:flag=0;printf("程序結束,按任意鍵退出!\n");}getchar();} }

函數實現:<Sqlist.cpp>

#include "stdio.h" #include "SqList.h"void initial(SqList &v) //初始化線性表 {int i;printf("請輸入初始線性表長度:n="); //輸入線性表初始化時的長度scanf("%d", &v.length);printf("請輸入從1到%d的各元素(整數)\n",v.length);getchar();for(i=0; i<v.length; i++) scanf("%d",&v.elem[i]); //輸入線性表的各元素 }void print(SqList &v) {int i;for(i=0; i<v.length; i++) printf("%d\n",v.elem[i]); }bool insert(SqList &v,int loc,int e) //插入一個元素,成功返回True,失敗返回False {int i;if((loc<1)||(loc>v.length+1)){printf("插入位置不合理!\n"); //位置不合理return false;}else if(v.length>=MAXSIZE) //線性表已滿 { printf("線性表已滿!\n");return false;} else {for(i=v.length-1;i>=loc-1;i--)v.elem[i+1]=v.elem[i]; //其后元素依次后移v.elem[loc-1]=e; //插入元素v.length++; //線性表長度加一return true;} } bool del(SqList &v,int loc,int &e) { //刪除一個元素,成功返回True,并用ch返回該元素值,失敗返回Falseint j;if(loc<1||loc>v.length) return false; //刪除位置不合理 else {e=v.elem[loc-1]; //e取得該元素值for(j=loc-1;j<=v.length-1;j++) v.elem[j]=v.elem[j+1]; //其后元素依次前移v.length--; //線性表長度減一return true;} }int locate(SqList v,int e) { //在線性表中查找ch的位置,成功返回其位置,失敗返回-1int i=0;while(i<v.length&&v.elem[i]!=e) i++; //當前位置后移,直到找到為止if(v.elem[i]==e) return i; //找到當前元素else return(-1); }

?

一般采用動態實現數據存儲。數組的好處,直接給出下標即可找到下標相應的數據。下標為零位置不再存儲數據。

?

轉載于:https://www.cnblogs.com/lcpholdon/p/4005266.html

總結

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

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