线性表

 

  1 #include<iostream>
  2 #define Max 50
  3 using namespace std;
  4 typedef char ElemType;
  5 
  6 typedef struct
  7 {
  8     ElemType data[Max];
  9     int length;
 10 }sqlist;
 11 
 12 //1.初始化线性表
 13 void initsqlist(sqlist *&L)
 14 {
 15     L=new sqlist;
 16     L->length=0;
 17 }     
 18 //2.销毁线性表
 19 void destroylist(sqlist *&L)
 20 {
 21     delete L;
 22 } 
 23 //3.判断线性表是否为空表
 24 bool listempty(sqlist *L)
 25 {
 26     if(0==L->length)
 27         return true;
 28     else
 29         return false;
 30 } 
 31 //4.求线性表的长度
 32 int listlength(sqlist *L)
 33 {
 34     return (L->length);
 35 } 
 36 //5.输出线性表
 37 void displist(sqlist *L)
 38 {
 39     if(listempty(L))
 40         return;
 41     for(int i=0;i<L->length;i++)
 42         cout<<L->data[i]<<"		";
 43     cout<<endl;    
 44 } 
 45 //6.求某个数据元素值
 46 bool getelem(sqlist *L,int i,ElemType &e) 
 47 {
 48     if(i<1 || i>L->length)
 49         return false;
 50     e=L->data[i-1];
 51         return true;            
 52 }
 53 //7.按元素值查找
 54 int locateelem(sqlist *L,ElemType e) 
 55 {
 56     int i=0;
 57     while(i<L->length && L->data[i]!=e)    
 58         i++;
 59     if(i>=L->length)
 60         return 0;
 61     else
 62         return i+1;    
 63 }
 64 //8.插入数据 
 65 bool listInsert(sqlist *&L,int i,ElemType e)
 66 {
 67     if(i<1 || i>L->length+1)  //注意这里 length要+1 极易出错
 68         return false;
 69     i--;
 70     for(int j=L->length;j>i;j--)
 71         L->data[j]=L->data[j-1];
 72     L->data[i]=e;
 73     L->length++;
 74     return true;    
 75 }
 76 //9.删除数据
 77 bool listdelete(sqlist *L,int i,ElemType &e)
 78 {
 79     if(i<1 || i>L->length)
 80         return false;
 81     i--;
 82     e=L->data[i];
 83     for(int j=i;j<L->length-1;j++)
 84         L->data[j]=L->data[j+1];
 85     L->length--;
 86     return true;        
 87 } 
 88 
 89 int main()
 90 {
 91     sqlist *L1;
 92     cout<<"1.初始化顺序表:";initsqlist(L1);
 93     
 94     cout<<"

2.插入数据:"<<endl;
 95     ElemType a[5]={'a','b','c','d','e'};
 96         for(int i=0;i<5;i++)        
 97             if(!listInsert(L1,i+1,a[i]))
 98                 cout<<a[i]<<"插入失败";
 99     
100     cout<<"
3.输出顺序表:";displist(L1);
101     
102     cout<<"
4.输出顺序表的长度:"<<listlength(L1);    
103     
104     cout<<"

5.判断顺序表是否为空:";
105     if(listempty(L1))
106         cout<<"	该顺序表为空";
107     else
108         cout<<"	该顺序表不为空";
109         
110     int k;
111     ElemType temp;    
112     cout<<"

6.请选择要输出第几个元素:";cin>>k;    
113     if(getelem(L1,k,temp))
114         cout<<"
		取值成功,该顺序表的第"<<k<<"个元素为:"<<temp;
115     else
116         cout<<"
		取值失败,你输入的位置"<<k<<"越界"; 
117         
118         
119     cout<<"

7.请选择在哪个位置上插入你想要的元素:" ;cin>>k;
120     cout<<"
8.请输入你想要插入的元素:" ;cin>>temp;
121     listInsert(L1,k,temp);
122     cout<<"
9.输出新的顺序表:";
123     displist(L1);
124     
125     cout<<"
10.请选择你想要删除的元素的位置:";cin>>k;
126     if(listdelete(L1,k,temp))
127         cout<<"
		删除成功!删除的元素是:"<<temp<<endl;
128     else 
129         cout<<"
		删除失败"<<endl;
130     
131     cout<<"
11.输出新的顺序表:";
132     displist(L1);
133     
134     cout<<"
12.释放顺序表";
135     destroylist(L1);
136     
137 }

 

你數過天上的星星嗎
原文地址:https://www.cnblogs.com/Myrecord-7/p/12493456.html