***題目:***編寫一個程序,實現順序表的各種基本運算,在此基礎上完成如下功能:
(1) 初始化順序表L。
(2) 依次在順序表L中插入元素a、b、c、e、f(從鍵盤輸入數據)。
(3) 輸出順序表L。
(4) 輸出順序表L的長度。
(5) 輸出順序表L的第4個元素。
(6) 輸出元素c的位置。
(7) 在第5個元素之前插入元素g。
(8) 輸出順序表L。
(9) 刪除第3個元素。
(10) 輸出順序表L。
**
實驗代碼:
**
#include<stdio.h>
#include<iostream>
using namespace std;
#define MAXSIZE 100
/*typedef struct{
char AData[MAXSIZE];
}infor;*/
typedef struct{
char *elem;
int length;
}Sqlist;
void Getelem(Sqlist L,int i){ //查找位置對應元素子函數
if(i<1||i>L.length)
printf("您想要查找的位置不在順序表中\n");
/* return e;*/
printf("順序表的第4個元素爲:%c\n",L.elem[i-1]);
}
void LocationElem(Sqlist L,char e){ //查找元素對應位置子函數
int i;
for(i=0;i<L.length;i++){
if(L.elem[i]==e)
printf("元素c對應的位置爲:%d\n",i+1);
}
}
int ListIsert(Sqlist &L,int t,int i,char e){ //指定位置插入數據元素子函數
int j;
if((i<1)||(i>t+1)) printf("您輸入的元素位置不在順序表的長度裏");
if(t==MAXSIZE) printf("順序表已達到最大長度");
for(j=t-1;j>=4;j--)
L.elem[j+1]=L.elem[j];
L.elem[i-1]=e;
return ++t;
}
int Deletlist(Sqlist &L,int t,int i){ //刪除指定位置元素子函數
int j;
if((i<1)||(i>t))
printf("您輸入的位置不在順序表中\n");
for(j=i;j<t;j++)
L.elem[j-1]=L.elem[j];
return --t;
}
void print(Sqlist L,int t){ //輸出順序表子函數
int i;
for(i=0;i<t;i++){
if(i<t-1)
printf("%c ",L.elem[i]);
else
printf("%c\n",L.elem[i]);
}
}
int main(){
Sqlist L;
//順序表初始化
L.elem=new char[MAXSIZE];
if(!L.elem) return 0;
L.length=0;
int i;
printf("請輸入順序表元素:");
//輸入順序表中的元素
for(i=0;;i++){
scanf("%c",&L.elem[i]);
L.length++;
if(L.elem[i]=='f') break;
getchar();
}
printf("順序表元素輸出結果爲:");
print(L,L.length);
int j;
Getelem(L,4); //查找位置對應元素子函數
LocationElem(L,'c'); //查找元素對應位置子函數
L.length=ListIsert(L,L.length,5,'g'); //指定位置插入數據元素:
printf("插入後的順序表爲:"); //輸出順序表子函數
print(L,L.length);
L.length=Deletlist(L,L.length,3); //刪除位置對應的數據元素
printf("刪除後的順序表爲:");
print(L,L.length);
return 0;
}
**
運行結果:
**