- /*
- *Copyright (c) 2017, 烟台大学计算机学院
- *All rights reserved.
- *文件名称:数据结构.cpp
- *作 者:贾存钰
- *完成日期:2017年9月16日
- *版 本 号:v1.0
- *
- *问题描述:顺序表基本算法的实现
- *输入描述:一组数
- *程序输出:见程序运行截屏
- */
- #include<iostream>///共实现了顺序表的十个基本算法
- #include<stdlib.h>
- using namespace std;
- # define listinitsize 100
- typedef struct
- {
- int *elem;
- int length;
- int listsize;
- }sqlist;
- int initlist(sqlist &p)///初始化
- {
- p.elem=(int *)malloc(listinitsize*sizeof(int));
- if(!p.elem)
- return 0;
- p.length=0;
- p.listsize=listinitsize;
- return 1;
- }
- void creat(sqlist &p,int k)///创建顺序表
- {
- int i;
- for(i=0;i<k;i++)
- {
- cin>>p.elem[i];
- p.length++;
- }
- }
- void display(sqlist &p)///输出
- {
- int i=0;
- if(p.length==0)
- {
- cout<<"该顺序表为空"<<endl;
- return;///自己对return的认识太片面了!
- }
- while(i!=p.length-1)
- {
- cout<<p.elem[i]<<' ';
- i++;
- }
- cout<<p.elem[i]<<endl;
- }
- int listempty(sqlist &p)///是空返回1,不是空返回0
- {
- if(!p.length)
- return 1;
- else
- return 0;
- }
- void zhiweiempty(sqlist &p)///将顺序表置为空表
- {
- p.length=0;
- }
- int listlength(sqlist &p)///求顺序表的长度
- {
- return p.length;
- }
- int getelem(sqlist &p,int q)///求顺序表中的第q个元素,若不存在,则返回零
- {
- int i=1;
- while(i!=q)
- {
- i++;
- }
- if(i<p.length&&i==q)
- return p.elem[i-1];
- else
- return 0;
- }
- int donglist(sqlist &p,int f)///求顺序表中第一个与输入元素相同的元素的逻辑序号
- {
- int i=0;
- while(p.elem[i]!=f&&i<p.length)
- {
- i++;
- }
- if(i<=p.length-1)
- return i+1;
- else
- return 0;
- }
- int insertlist(sqlist &p,int n,int m)///在顺序表的第n个位置插入新元素
- {
- int i;
- if(n>p.length+1||n<1)///若插入位置错误则结束函数调用
- return 0;
- for(i=p.length;i>=n;i--)
- {
- p.elem[i]=p.elem[i-1];
- }
- p.elem[n-1]=m;
- p.length++;
- return 0;
- }
- int deletelist(sqlist &p,int n)///删除顺序表的第n个元素
- {
- int i;
- if(n<1||n>p.length)
- return 0;
- for(i=n-1;i<p.length-1;i++)
- {
- p.elem[i]=p.elem[i+1];
- }
- p.length--;
- return 0;
- }
- void destroylist(sqlist *&x)
- {
- free(x);
- cout<<"顺序表已被销毁"<<endl;
- }
- int main()
- {
- sqlist p,*x;
- x=&p;
- int k,s,h,z,g,c,e,w,u,r,b;
- cin>>k;
- initlist(p); ///初始化
- creat(p,k);
- display(p);
- cin>>r;
- deletelist(p,r);
- display(p);
- cin>>u>>b;
- insertlist(p,u,b);
- display(p);
- cin>>c;
- g=getelem(p,c);
- cout<<g<<endl;
- cin>>e;
- w=donglist(p,e);
- cout<<w<<endl;
- z=listlength(p);
- cout<<z<<endl;
- s=listempty(p);
- cout<<s<<endl;
- zhiweiempty(p);
- h=listempty(p);
- cout<<h<<endl;
- display(p);
- destroylist(x);
- display(p);
- cout<<x->elem[5]<<endl;
- return 0;
- }