数据结构——线性表
来源:互联网 发布:微信公众号矩阵 编辑:程序博客网 时间: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;}