数据结构——顺序表
来源:互联网 发布:通用网络加速 编辑:程序博客网 时间:2024/05/17 06:23
文章很简单,只适合刚学数据结构的人看下……
自己辛苦了两小时,做了视屏教程,写下了一段代码……
算是对今天的总结…………
代码主要实现的是对顺序表的基本操作,创建,插入,查找,删除,合并,就这几个功能,
在VC6.0里面编译的,可以在turbec中运行…………
代码如下:
#include<stdio.h>
#include<malloc.h>
typedef struct
{
int elem[100];
int last;
}seglist;
int Locate(seglist *L,int a)
{
int i;
i=0;
while(a!=L->elem[i])
{
i++;
if(i>L->last)
{
return -1;
}
}
return i+1;
}
int inlit(seglist *L,int i,int j)
{
int a;
if(i<0||i>L->last+2)
{
printf("插入位置不合法……");
return -1;
}
if(L->last+1>99)
{
printf("插入位置不合法……");
return -1;
}
for(a=L->last+1;a>i-1;a--)
{
L->elem[a]=L->elem[a-1];
}
L->elem[i-1]=j;
return 1;
}
void hebing(seglist *a,seglist *b,seglist *L)
{
int i,j,k=0;
for(i=0,j=0;i<a->last&&j<b->last;)
{
if(a->elem[i]<=b->elem[j])
{
L->elem[k]=a->elem[i];
i++;
k++;
}
else
{
L->elem[k]=b->elem[j];
j++;
k++;
}
}
if(i<=a->last)
{
for(;i<=a->last;)
{
L->elem[k]=a->elem[i];
i++;
k++;
}
}
if(j<=b->last)
{
for(;j<=b->last;)
{
L->elem[k]=b->elem[j];
j++;
k++;
}
}
L->last=k-1;
}
int dellist(seglist *l,int i)
{
int e;
int k;
if(i<1||i>l->last+1)
{
printf("删除的位置不合法");
return 0;
}
e=l->elem[i-1];
for(k=i-1;k<=l->last-1;k++)
{
l->elem[k]=l->elem[k+1];
}
return e;
}
void main()
{
seglist *l;
int r,i;
int j;
int a;
int b,c,d,e;
int f,g;
int h;
l=(seglist*)malloc(sizeof(seglist));
printf("请输入顺序表l的长度:");
scanf("%d",&r);
l->last=r-1;
printf("请输入%d个元素/n",r);
for(i=0;i<=l->last;i++)
{
scanf("%d",&l->elem[i]);
}
printf("请选择一下的操作/n");
printf("1,查找元素/n");
printf("2,插入元素/n");
printf("3,删除元素/n");
printf("4,合并元素/n");
printf("5,退出系统/n");
scanf("%d",&j);
switch(j)
{
case 1:
printf("请输入要查找的元素:");
scanf("%d",&a);
j=Locate(l,a);
if(j==-1)
printf("元素不存在/n");
else
printf("元素的位置为:%d/n",j);
break;
case 2:
printf("写出插入元素的位置和元素:/n");
scanf("%d,%d",&b,&c);
d=inlit(l,b,c);
if(d==-1)
{
return;
}
else
{
printf("输出元素:/n");
for(e=0;e<=l->last+1;e++)
printf("%d ",l->elem[e]);
}
break;
case 3:
printf("输入要删除的位置:");
scanf("%d",&f);
g=dellist(l,f);
if(g)
{
printf("删除的元素为:%d/n",g);
}
else
return;
break;
case 4:
seglist *x,*m,*n;
x=(seglist*)malloc(sizeof(seglist));
m=(seglist*)malloc(sizeof(seglist));
n=(seglist*)malloc(sizeof(seglist));
printf("请输入顺序表a的长度:");
scanf("%d",&r);
m->last=r-1;
printf("请输入%d个元素/n",r);
for(i=0;i<=m->last;i++)
{
scanf("%d",&m->elem[i]);
}
printf("请输入顺序表b的长度:");
scanf("%d",&r);
n->last=r-1;
printf("请输入%d个元素/n",r);
for(i=0;i<=n->last;i++)
{
scanf("%d",&n->elem[i]);
}
printf("合并数组:/n");
hebing(m,n,x);
printf("输出元素:/n");
for(h=0;h<=x->last;h++)
{
printf("%d ",x->elem[h]);
}
case 5:
break;
default:
printf("非法操作…………");
}
}
程序很简单……
别见笑,本人还是菜鸟,还在学习…………
- 数据结构—顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构——顺序表
- 数据结构—顺序串
- 数据结构——顺序表有序顺序表归并
- 数据结构——顺序表有序顺序表查询
- 顺序表的插入——数据结构
- c#数据结构学习——顺序表
- 数据结构的实现——顺序表
- C++数据结构——顺序表
- vc-study-7
- 用c++函数结构计算时间差
- 经典查询
- vc-study-8
- 类的调用
- 数据结构——顺序表
- 数据结构——单链表
- 数据结构——单链表
- Ant安装并调试gwt程序流程
- 数据结构——双向链表,循环链表
- 使用eclipse引入gwt例程
- 数据结构——单链表,多项式链表
- 数据结构——顺序栈,双向顺序栈,链栈
- 学习嵌入式系统的10点建议(转载)