顺序表,插入和删除不方便,但是查找方便,
具体操作:插入元素,删除元素,查找元素
算是最简单的数据结构,直接附代码,和容易理解,理解不了的先去看看指针吧。
#include<iostream>
#include<stdio.h>
using namespace std;
const int List_Init_Size=100;
const int ListIncrement=10;
typedef struct
{
int *elem;
int length;
int listsize;
}SqList;
//初始化顺序表
int InitList_Sq(SqList &L)
{
L.elem=(int *)malloc(List_Init_Size*sizeof(int));
if(!L.elem) return 0;
L.length=0;
L.listsize=List_Init_Size;
return 1;
}
//插入
int ListInsert_sq(SqList &L,int i,int e)
{
if(i<1||i>L.length+1)
{
cout<<"插入失败"<<endl;
return 0;
}
if(L.length>=L.listsize)
{
int *Newbase;
Newbase=(int *)realloc(L.elem,(L.listsize+ListIncrement)*sizeof(int));
if(!Newbase)
{
cout<<"分配出错"<<endl;
return 0;
}
L.elem=Newbase;
L.listsize+=ListIncrement;
}
int *p,*q;
q=&(L.elem[i-1]);
for(p=&(L.elem[L.length-1]);p>=q;--p)
*(p+1)=*p;
*q=e;
++L.length;
return 1;
}
//删除指定位置的元素,并把值赋给e
void ListDelete_sq(SqList &L,int i,int &e)
{
int *p,*q;
if((i<1)||(i>L.length))
cout<<"操作出界了"<<endl;
else
{
p=&L.elem[i-1];
e=*p;
q=L.elem+L.length-1; //数组尾部的指针
for(++p;p<=q;++p)
*(p-1)=*p;
--L.length;
cout<<"删除成功!"<<endl;
}
}
//查找元素 e,返回下标
int SearchElem_Sq(SqList L,int e)
{
int i=1;
int *p=L.elem;
while(i<=L.length&&*p++!=e)
++i;
if(i<=L.length)
return i;
else
return 0; //查找失败
}
int main()
{
}