顺序表的简单程序

来源:互联网 发布:网络语言dx是什么意思 编辑:程序博客网 时间:2024/06/07 04:45
第二次在机房上机实验《数据结构与算法》,尽管学的还是“皮毛”,但是能够写出来运行基本正确的程序还是比较兴奋的。

 

理论的研究和学习最终还是应该服务于实践的,也只要实践过才能够检验理论的正确!第一次通过学习算法来实现一些数组类:顺序表的创建、插入、删除、查找等

code:

 

#include"iostream"//#include"stdlib.h"using namespace std;typedef struct{int *p;int length;int size;}SqList;int intial(SqList &L){L.p=(int *)malloc(10*sizeof(int));if(!L.p)return 0;else{L.length=10;L.size=10;cout<<"请输入顺序表中的所有元素(10个):"<<endl;for(int i=0;i<10;i++){cin>>L.p[i];}cout<<"你所创建的顺序表是:"<<endl;for(int k=0;k<10;k++){cout<<L.p[k]<<"  ";}}return 1;}int Insert(SqList &L,int i,int e){if(i<1||i>L.length+1)return 0;if(L.length>=L.size){int * newbase=(int *)realloc(L.p,(L.size+1)*sizeof(int));if(!newbase) return 0;L.p = newbase;L.size+=1;}int *q = &(L.p[i-1]);for(int *pt=&(L.p[L.size-1]);pt>=q;pt--)*(pt+1) = *pt;*q = e;L.length=L.length+1;return 1;}int Delete(SqList &L,int i,int &e){if(i<1||i>L.length)return 0;int *p = &(L.p[i-1]);e= *p;int *q= &L.p[L.length-1];for(p++;p<=q;p++)*(p-1)=*p;L.length=L.length-1;return 1;}int search(SqList L,int i){//if(i<1||i>L.length)//return 0;for(int k=0;k<L.length;k++)if(L.p[k]==i){cout<<L.p[k];cout<<"您所查找的数是在顺序表的第  "<<k+1<<"个位置"<<endl;return 1;break;}cout<<"您所查找的数字不存在顺序表中!!!"<<endl;return 1;}int main(){int temp,m,n,g,s;SqList L;intial(L);cout<<"原始的顺序表是:"<<endl;for(int i=0;i<10;i++)cout<<L.p[i]<<"  ";cout<<endl;cout<<"请输入你所想插入的位置(1~10):"<<endl;cin>>m;cout<<"请输入你所插入的一个整数:"<<endl;cin>>n; Insert(L,m,n);cout<<"插入元素后的顺序表是:"<<endl;for(int j=0;j<11;j++)cout<<L.p[j]<<"  ";cout<<endl;cout<<"请输入你所想删除的位置:"<<endl;cin>>g;Delete(L, g,temp);cout<<"删除顺序表一个元素之后为:"<<endl;for(int k=0;k<10;k++)cout<<L.p[k]<<"  ";cout<<endl<<"请输入一个您查找的值:";cin>>s; search( L, s);return 0;}//这个程序还是有很多的漏洞的,需要优化改正


  感觉到算法的力量,数据结构的重要性!学习中…………

                                                                                 2011年9月21日 13:02:23星期三