数据结构C语言版之线性表

//顺序表:
#include<stdio.h>
#include<stdlib.h>
#define maxlength 20
#define listincreament 10
typedef struct {
	int *elem;
	int length;
	int listsize;
}sqlist;
void T_creat(sqlist &l)
{
   	l.elem=(int*)malloc(maxlength*sizeof(int));
	if(!l.elem)
		exit(0);
	printf("输入表的长度:\n");
	scanf("%d",&l.length);
    printf("输入数据元素:\n");
	for(int i=0;i<l.length;i++)
		scanf("%d",&l.elem[i]);
	l.listsize=l.length;
}
void travel(sqlist &l)
{
	int i;
	for(i=0;i<l.length;i++)
		printf("%5d",l.elem[i]);
	printf("\n");
}
void locationelem(sqlist &l,int e)
{
	int i,k;
	int flag=1;
	for(i=0;i<l.length&&flag;i++)
	{
		if(l.elem[i]==e)
		{   
			k=i;
			flag=0;
		}
	}			
	if(!flag)
		printf("查找成功,该元素为数序表中第%d个数\n",k+1);
	else
		printf("查找失败\n");
}
void delete1(sqlist &l,int addr)
{
	int i;
	for(i=addr-1;i<l.length;i++)
		l.elem[i]=l.elem[i+1];
	
	l.listsize=l.length-1;
	l.length=l.length-1;
}
void insert(sqlist &l,int a,int elem)
{
	int i;
	l.elem=(int*)realloc(l.elem,listincreament*sizeof(int));
	l.listsize=maxlength+listincreament;
	for(i=l.length;i>a-1;i--)
	{
		l.elem[i]=l.elem[i-1];
	}
	l.elem[a-1]=elem;
	l.length+=1;
	
}
void merge(sqlist &la,sqlist &lb,sqlist &lc)
{
	int i,j,k;
	lc.elem=(int*)malloc((la.length+lb.length)*sizeof(int));
	lc.listsize=la.length+lb.length;
	lc.length=0;
	i=j=k=0;
	while(i<la.length&&j<lb.length){
		if(la.elem[i]<lb.elem[j])
			lc.elem[k++]=la.elem[i++];
		else if(la.elem[i]>lb.elem[j])
			lc.elem[k++]=lb.elem[j++];
		else
		{
			lc.elem[k++]=la.elem[i];
			i++;j++;
		}
	}
	while(i<la.length)
		lc.elem[k++]=la.elem[i++];
	while(j<lb.length)
		lc.elem[k++]=lb.elem[j++];
	lc.length=k;
}
<pre name="code" class="cpp">int main()
{
	sqlist L,la,lb,lc;
	int m,n,s,r;
	T_creat(L);
	printf("输入要查找的数:\n");
	scanf("%d",&m);
	locationelem(L,m);
	printf("输入要删除的数的位置:\n");
	scanf("%d",&n);
	delete1(L,n);
	travel(L);
	printf("输入要插入的位置及要插入的数:\n");
	scanf("%d",&s);
	scanf("%d",&r);
	insert(L,s,r);
	travel(L);*/
	printf("请输入要合并的两表数据(递增有序):\n");
	T_creat(la);
	T_creat(lb);
	printf("两表合并后为:\n");
	merge(la,lb,lc);
    travel(lc);
	return 0;
}




posted @ 2015-12-24 12:26  Joe.Smith  阅读(880)  评论(0编辑  收藏  举报