数据结构——线性表

来源:互联网 发布:微信公众号矩阵 编辑:程序博客网 时间:2024/05/16 06:22
#include <iostream>using namespace std;#define Listsize 100        //表空间的大小可根据实际需要而定,这里假设为100typedef int DataType;        //DataType的类型可根据实际情况而定,这里假设为inttypedef struct {    DataType data[Listsize];            int len;        //当前的表长度}SeqList;//初始化线性表int  init_list(SeqList * sl){    sl->len=0;    return 1;}//插入元素int  insert_list(SeqList * sl,int i,int x){    if(i<1 || i>sl->len+1)    {        cout<<"插入位置错误!"<<endl;        return 0;    }    for(int j=sl->len+1;j>i;j--) //将序号为i的结点及之后的结点后移        sl->data[j]=sl->data[j-1];    sl->data[i]=x; //在序号i处放入x    sl->len++; //线性表的长度增加1     return 1;}//输出元素void display_list(SeqList * sl){    if(sl->len==0)        cout<<"is empty!"<<endl;    else    {        int i=1;        for(; i<=sl->len; i++)            cout<<sl->data[i]<<"  ";    }}//删除元素void delete_list(SeqList * sl, int i){    if(i<1 || i>sl->len)    {        cout<<endl<<"删除位置不合理!";    }    else    {        for(int j=i;j<sl->len;j++)        sl->data[j]=sl->data[j+1];        sl->len--;    }}//查找元素int locate_list(SeqList * sl,int i){    for(int j=1;j<=sl->len;j++)        if(sl->data[j]==i)            return j;    return 0;}//置线性表空void clear_list(SeqList * sl){    sl->len=0;    cout<<"置空成功!"<<endl;}//逆置线性表void lizhi_list(SeqList * sl){    int j=sl->len;    for(int i=1;i<=sl->len/2;i++,j--)    {        int temp=sl->data[i];        sl->data[i]=sl->data[j];        sl->data[j]=temp;    }}int main(){    SeqList * sl;    sl=(SeqList *)malloc(sizeof(SeqList));    if(!sl)    {        printf("分配空间失败!\n");            return 0;    }    //初始化线性表    init_list(sl);    //插入元素    insert_list(sl,1,10);    insert_list(sl,2,8);    insert_list(sl,3,13);    insert_list(sl,4,25);    insert_list(sl,5,37);    insert_list(sl,6,9);    insert_list(sl,7,65);    //输出元素    display_list(sl);    cout<<endl;    //再插入元素    insert_list(sl,2,39);    insert_list(sl,5,88);    insert_list(sl,10,97);    //输出元素    display_list(sl);    cout<<endl;    //删除元素    delete_list(sl,1);    delete_list(sl,2);    delete_list(sl,6);    //输出元素    display_list(sl);    delete_list(sl,10);    //查找元素    cout<<endl<<"您要找的元素的位置: ";    if(int t=locate_list(sl,2))        cout<<t<<endl;    else        cout<<"cann't found!"<<endl;        //逆置线性表    cout<<"线性表长度:";    cout<<sl->len<<endl;    lizhi_list(sl);    display_list(sl);    //置线性表空    cout<<endl<<"将表置空?  ";    clear_list(sl);    display_list(sl);    return 0;}

原创粉丝点击