2020-11-27

数据结构(C语言):顺序表

#include<stdio.h>
#include<stdlib.h>
#define ERROR 0
#define OK 1
typedef int Elemtype;
typedef int status;
#define maxsize 50
typedef struct{
  int data[maxsize];
  int length;
}sqList;
void InitList(sqList &L){
	for(int i=0;i<maxsize;i++)
		L.data[i]=0;
	        L.length=0;
}
status ListDelete(sqList &L,int i,Elemtype &e){
if(i<1||i>L.length)
return 0;
e=L.data[i-1];
for(int j=i;j<L.length;j++)
L.data[j-1]=L.data[j];
L.length--;
return 1;
}
status ListInsert(sqList &L,int i,Elemtype e){
if(i<1||i>L.length+1)
return 0;
if(L.length>=maxsize)
return 0;
for(int j=L.length;j>=i;j--)
L.data[j]=L.data[j-1];
L.data[i-1]=e;
L.length++;
return 1;
}
status GetList(sqList &L)
{
	int i;
	printf("请输入线性表元素:");
	for (i=0;i<L.length;i++)
	{
		scanf("%d",&L.data[i]);
	}
	printf("您输入的元素为:");
	for (i=0;i<L.length;i++)
	{
		printf("%3d",L.data[i]);
	}
	printf("\n");
	return OK;
}

status LocatElem(sqList L,Elemtype e){
int i;
for(i=0;i<L.length;i++)
if(L.data[i]==e)
return i+1;
return 0;
}
int main(){
    sqList L;
    InitList(L);
    int i;
    //输出顺序表中数据元素
    printf("请输入顺序表的长度:");
	scanf("%d", &L.length);
	GetList(L);
   //删除数据元素
    printf("请输入在第几个位置删除元素:");
	scanf("%d",&i);
	int e;
	ListDelete(L,i,e);
    printf("删除数据元素为:%d",e);
    printf("\n");
    printf("已删除第%d个数据元素后的顺序表为:",i);
	for (i=0;i<L.length;++i)
	{
		printf("%3d",L.data[i]);
	}
    printf("\n");
     //插入数据元素
    printf("请输入在第几个位置前插入元素:");
	scanf("%d",&i);
	printf("插入的元素是:");
	scanf("%d",&e);
	ListInsert(L,i,e);
	printf("在线性表的第%d个元素前插入正整数%d后的顺序表:\n",i,e);
	for (i=0;i<L.length;++i)
	{
		printf("%3d",L.data[i]);
	}
printf("\n");
}

对于初学者很适合,若有改进的地方,请大家积极尽言!!

上一篇:java实现队列


下一篇:背包