顺序表的基本操作
程序员文章站
2024-03-20 14:24:40
...
顺序表的基本操作
- 顺序表的建立及遍历
#include<stdio.h>
#include<stdlib.h>
#define Maxsize 100
#define ERROR -1
#define OK -2
typedef struct{
int data[Maxsize];
int length;
}sqlist;
void initlist(sqlist& l,int e)
{
l.length=e;
for(int i=0;i<l.length;i++)
{
scanf("%d",&l.data[i]);
}
}
void scan(sqlist& l)
{
for(int i=0;i<l.length;i++)
printf("%d ",l.data[i]);
printf("\n");
}
- 插入操作
int Insert(sqlist& l,int pos,int e)
{
if(pos<1||pos>l.length+1||l.length>=Maxsize) return ERROR;
for(int i=l.length-1;i>=pos-1;i--)
l.data[i+1]=l.data[i];
l.data[pos-1]=e;
l.length++;
return OK;
}
- 删除操作
int Delete(sqlist& l,int pos)
{
if(pos<1||pos>l.length) return ERROR;
for(int i=pos;i<l.length;i++)
l.data[i-1]=l.data[i];
l.length--;
return OK;
}
- 逆序操作
void reverse(sqlist& l)
{
int temp;
for(int i=0;i<l.length/2;i++)
{
temp=l.data[i];
l.data[i]=l.data[l.length-1-i];
l.data[l.length-1-i]=temp;
}
}
- 查找操作
void findpos(sqlist& l,int e)
{
for(int i=0;i<l.length;i++)
{
if(l.data[i]==e)
printf("%d ",i+1);
}
printf("\n");
}
- 删除特定元素
void Delete_s(sqlist& l,int e)
{
int k=0;
for(int i=0;i<l.length;i++)
{
if(l.data[i]!=e)
{
l.data[k]=l.data[i];
k++;
}
}
l.length=k;
}
- 合并操作
int combine(sqlist& s1,sqlist& s2,sqlist& c)
{
int i=0,j=0,k=0;
if(s1.length+s2.length>c.length) return ERROR;
while(i<s1.length&&j<s2.length)
{
if(s1.data[i]<s2.data[j])
{
c.data[k]=s1.data[i];
k++;
i++;
}
else
{
c.data[k]=s2.data[j];
k++;
j++;
}
}
while(i<s1.length){
c.data[k]=s1.data[i];
k++;
i++;
}
while(j<s2.length){
c.data[k]=s2.data[j];
k++;
j++;
}
c.length=k;
return OK;
}
上一篇: 数据结构_数据结构_数据结构_数据结构_初级_顺序表_静态
下一篇: 封装一个cookie