数据结构——线性表

 

#include <iostream>
using namespace std;

#define Listsize 100 //表空间的大小可根据实际需要而定,这里假设为100
typedef
int DataType; //DataType的类型可根据实际情况而定,这里假设为int
typedef 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;
}

 

 

 

posted @ 2010-07-22 14:21  忧国忧铭  Views(263)  Comments(0)    收藏  举报