数据结构c代码1:顺序表

下面是用c语言实现的顺序表的一些基本操作:

#include <stdio.h>
#include <stdlib.h>

#define MAXSIZE 25  //顺序表最大长度 

/*定义顺序表*/ 
typedef struct
{
	int data[MAXSIZE];
	int len;
}SeqList;

/*初始化顺序表*/

void InitList(SeqList *L)
{
	L->len = 0;
} 

/*建立顺序表*/
int CreatList(SeqList *L, int a[], int n)
{
	if(n > MAXSIZE)
	{
		printf("空间不够,无法建立顺序表!");
		return 0; 
	}
	
	for(int i=0; i<n; i++){
		L->data[i] = a[i];
	}
	L->len = n;
	return 1;
} 

/*遍历操作*/
void PrintList(SeqList *L)
{
	for(int i=0;i<L->len;i++){
		printf("%d ",(L->data[i]));
	}
}

/*判空操作*/
int  IsEmpty(SeqList *L)
{
	if(L->len == 0){
		return 1;
	}
	else
		return 0;
}

/*求顺序表长度*/
int GetLength(SeqList *L)
{
	return L->len; 
}

/*按值查找*/
int Locate(SeqList *L, int x)
{
	int i ; 
	for( i=0;i<L->len;i++)
	{
		if(L->data[i] == x)
		{
			return (i+1);   //找到该数,并将其下标返回 
		}
	}
	
	if(i == L->len){
		return 0;  //代表没有找到 
	}
}

/*按位查找*/
int Get(SeqList *L, int x, int *ptr)
{
	 //若查找成功,则通过指针参数ptr返回值
	 if(x < 1 || x > L->len)
	 {
	 	printf("查找位置非法,查找错误!!\n");
	 	return 0;
	 }
	 else
	 {
	 	*ptr = L->data[x];
	 	return 1;
	 }
}

/*插入操作*/
int Insert(SeqList *L, int i, int x)
{
	if(L->len > MAXSIZE)
	{
		printf("上溢错误!!");
		return 0 ; 
	}
	
	if(i<1 || i>L->len)
	{
		printf("插入位置错误!!!");
		return 0;
	}
	
	for(int k=L->len;k>i;k--){
		L->data[k]=L->data[k-1];
	}
	L->data[i] = x;
	L->len++;
	return 1;
	
}
/*删除操作*/
int Delet(SeqList *L, int i, int *ptr)
{
	if(L->len == 0)
	{
		printf("该顺序表为空!!");
		return 0;
	}
	if(i < 1 || i > L->len)
	{
		printf("删除位置错误!");
		return 0;
	}
	*ptr = L->data[i-1];
	for(int k=i;k<L->len;k++){
		L->data[k-1] = L->data[k];
	}
	L->len--;
	return 1;
}

/*修改操作*/
int Modify(SeqList *L, int i, int x)
{
	if(i < 1 || i > L->len)
	{
		printf("位置错误!");
		return 0;
	}
	L->data[i-1] = x;
	return 1;
} 

int main()
{
	int x;
	int a[5] = {5, 15, 25, 35, 45};
	SeqList list;
	InitList(&list);   //初始化顺序表
	if(IsEmpty(&list))
	{
		 printf("初始化顺序表成功!\n");
	}
	printf("给表赋值:5,15,25,35,45\n遍历并输出顺序表:\n");
	CreatList(&list, a, 5);   //建立一个长度为5的顺序表 
	PrintList(&list);    //遍历顺序表 
	
	printf("\n在第五位后插入一个500:\n");
	Insert(&list, 5, 500);
	PrintList(&list);
	
	if(Modify(&list, 3, 250) == 1)
	{
		printf("\n把第三位改成250\n");
		PrintList(&list);
	}	
	
	if(Delet(&list, 6, &x))
	{
		printf("\n把倒数第一位删除,删除的值是%d\n", x);	
		PrintList(&list);
	}
	
	system("pause");
	return 0;
}

 
上一篇:Git常见错误与操作:error: src refspec master does not match any解决办法


下一篇:Git应用详解第七讲:Git refspec与远程分支的重要操作