代码改变世界

第一次数据结构作业

2012-04-15 22:21  璋廊  阅读(273)  评论(0编辑  收藏  举报

编写一个完整的程序,实现顺序表的建立、插入、删除、输出等基本运算。

(1)       建立一个顺序表,含有n个数据元素。

(2)       输出顺序表及顺序表的长度。

(3)       在顺序表给定的位置i,插入一个值为x的结点。

(4)       在顺序表中删除值为x的结点或者删除给定位置i的结点。

(5)       将顺序表逆置,将结果保存到另外的顺序表中。

(6)       将顺序表按升序排序。

(7)       将两个顺序有序表A和B合并为一个有序表C。

(8)       在主函数中设计一个简单的菜单,分别测试上述算法。

 

综合训练:利用顺序表实现一个班级学生信息管理(数据录入、插入、删除、排序、查找等)

#include<stdio.h>
int Delete(int *s,int x,int n)//删除所有值为x的元素;
{
	int i=0,p=0,k=0;
	while(i<n)
	{
	 if(s[i]==x)
	 {
		p++;
		s[k]=s[i++];
	 }
  else {
   s[k++]=s[i++];
  }
	}
 return p;
}
void print(int *s,int n)//输出数组元素;
{
	 int i=0;
	 while(i<n)
	 {
	  printf("%d ",s[i++]);
	 }
	 printf("\n");
}
void Invert(int *s,int n)//倒置;
{
	 int t,i;
	 if(n==1)
	  return ;
	  for(i=0;i<n/2;i++)
	  {
	   t=s[i];
	   s[i]=s[n-i-1];
	   s[n-i-1]=t;
	  }
}
void Sort(int *s,int n)//冒泡排序;
{
	 int i,j,t;
	 for(i=1;i<n;i++)
	  for(j=0;j<n-i;j++)
	  {
	   if(s[j]<s[j+1])
	   {
		t=s[j];
		s[j]=s[j+1];
		s[j+1]=t;
	   }
	  }
}

void Add(int *s,int x,int n)//插入一个元素:
{
	 int i=n-1,k=n,p=0;
	 while(i>=0)
	 {
	  if(s[i]<=x)
	  {
		  s[k]=s[i];
		  k--;i--;
	  }
	  else{
		  s[k]=x;break;
	  }
	 }

}
void hebin(int *a,int n,int *b,int m,int *c)//合并的有序数组:
{
	int i=0,j=0,k=0;
	while(i<n&&j<m)
	{
		if(a[i]>b[j])
		{
			c[k++]=b[j++];
		}
		else {
			c[k++]=a[i++];
		}
	}
	if(i<n)
		while(i<n)
		{
			c[k++]=a[i++];
		}
		else while(j<m)
		{
			c[k++]=b[j++];
		}
}

   
int main()
{
	 int s[101];
	 int i,n,x;
	 printf("输入一个数n表示n个数据元素!\n");
	 scanf("%d",&n);
	 printf("随机输入n个数!\n");
	 for(i=0;i<n;i++)
	  scanf("%d",&s[i]);
	 printf("顺序表的长度%d\n",n);
	 printf("输入一个数x删除所有值为x的元素!\n");
	 scanf("%d",&x);
	 int p=Delete(s,x,n);
	 n=n-p;
	 if(p==0)
	  printf("顺序表里没有%d\n",x);
	 else{
	  printf("删除x后的顺序表\n");
	 print(s,n);
	 }

	 Invert(s,n);
	 printf("倒置后的数组!\n");
	 print(s,n);
	 Sort(s,n);
	 printf("排序后的数组!\n");
	 print(s,n);
	 printf("输入一个值!\n");
	 scanf("%d",&x);
	 Add(s,x,n);
	 printf("插入后的数组!\n");
	 print(s,n+1);
	 printf("将数组1,2,3,4,5")
	 int a[5]={1,3,5,7,9};
	 int b[5]={0,2,4,6,8};
	 int c[101];
	 hebin(a,5,b,5,c);
	 print(c,10);
	 return 0;
}