C語言數據結構順序表的相關操作

//順序表的建立
#include<stdio.h>
#include<stdlib.h>
typedef int element;
#define MAXSIZE 1024
typedef struct
{
	element data[MAXSIZE];
	int last;
}Sequ_List;
Sequ_List*Creat_sequlist();//順序表的建立
int delete_sequlist(Sequ_List*L,int i);//按指定位置進行刪除
int insrt_seulist(Sequ_List*L,int i,element x);//按指定位置進行插入
element ret_data(Sequ_List*L,int i);//返回指定位置的數據
void print_sequlist(Sequ_List*L);//遍歷
int  search_sequlist(Sequ_List*L,element x);//返回相應數據的位置

void main()
{
	
	Sequ_List*p;
	int i;//插入位置
	 int j;//刪除位置
	 int k;//返回指定位置
	 int l;//與t相對應
	 element m;//插入的數據
	 element n;//返回數據的指定位置
	 element t;//返回數據的位置
      p=Creat_sequlist();
	    if(p!=NULL)
	     	printf("鏈表創建成功!\n");
		printf("請輸入想要插入的位置和數據:\n");
		scanf("%d%d",&i,&m);
	 if(insrt_seulist(p,i,m)==1)
		 printf("按指定位置插入數據成功!\n");
	    else
			printf("數據插入失敗!\n");
		printf("請輸入刪除節點的位置:\n");
		scanf("%d",&j);
		if(delete_sequlist(p,j))
			printf("刪除成功!\n");
			else
			printf("刪除失敗!\n");
			 print_sequlist(p);
			printf("請輸入要返回的位置:\n");
			 scanf("%d",&k);
			 n=ret_data(p,k);
			printf("data[%d]=%d\n",k,n);
			 printf("請輸入要返回的位置的數據:\n");
			   scanf("%d",&t);
			l=search_sequlist(p,t);
			printf("%d的位置爲%d\n",t,l);
			printf("遍歷後的結果爲:\n");
              print_sequlist(p);


	

}
Sequ_List*Creat_sequlist()
{
	Sequ_List*L;
	element x;
	printf("請輸入數據:\n");
	scanf("%d",&x);
	int i=0;
	L=(Sequ_List*)malloc(sizeof(Sequ_List));
	  if(L==NULL)
		  return L;
	  
	  else
	  {
		  
		  while(x!=0)
		  {
			  L->data[i++]=x;
			  scanf("%d",&x);
		  }
		  L->last=i-1;

	  }
		  
	  return L;
}
int insrt_seulist(Sequ_List *L,int i,element x)
{
	int j;
	if(i<1||i>L->last+2)//判斷插入位置是否合法

		return 0;
	if(L->last+1>=MAXSIZE)//判斷空間是否已滿
		return -1;
	  for(j=L->last;j>=i-1;j--)
	  {
		  L->data[j+1]=L->data[j];
	  }
	  L->data[i-1]=x;
	  L->last=L->last+1;
	    return 1;

}
int delete_sequlist(Sequ_List*L,int i)
{
	int j;
	if(i<1||i>L->last+1)
		return 0;
	 else
	 {
		 for(j=i-1;j<=L->last;j++)
			L->data[j]=L->data[j+1];

	 }
	 L->last=L->last-1;
	 return 1;

}
element ret_data(Sequ_List*L,int i)
{
	
	if(i<1||i>L->last+1)
		 printf("返回數據位置違法!\n");
	  else
		  return (L->data[i-1]);

}
int  search_sequlist(Sequ_List*L,element x)
{
	int i;
	for(i=0;i<=L->last;i++)
		if(L->data[i]==x)
			break;
		if(i>L->last)
			return 0;
			else
		     return i+1;

}
void print_sequlist(Sequ_List*L)
{
	int i;
	for(i=0;i<=L->last;i++)
		printf("data[%d]=%d",i+1,L->data[i]);
	    if((i+1)%5==0)
			printf("\n");
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章