每天一个小程序——顺序表的基本操作!
2015-09-29 13:08
555 查看
#include<stdio.h>
#define max 100
typedef struct{
int data[max];
int last;
}List;
void Init(List *L)//顺序表初始化
{
//L.data[0]=0;
L->last=0;
}
void Createlist(List *L,int n)
{
int i;
printf("请输入顺序表元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&(L->data[i]));
L->last=n;
}
}
int Locate(List *L,int x)//查找链表中第一个与x相等的元素的位置
{
int i=0;
while((i<L->last)&&(L->data[i]!=x))
i++;
if(i<L->last)
return i;
else
return 0;
}
int Insert( List *L,int i,int x)//在第i个元素后面插入一个元素x
{
int j;
if(i>L->last||i<0)
{
printf("插入失败!\n");
return 0;
}
for(j=L->last;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x;
L->last=L->last+1;
return 0;
}
int Delete(List *L,int i)//删除第i个元素
{
int j;
if(i<0||i>L->last)
{
printf("位置不合法!\n");
return 0;
}
for(j=i;j<L->last;j++)
L->data[j]=L->data[j+1];
L->last=L->last-1;
return 0;
}
int print(List *L)
{
int i=0;
if(L->last<=0)
{
printf("表中没有元素!\n");
return 0;
}
for(i=0;i<=L->last;i++)
{
printf("%d ",L->data[i]);
//i++;
}
return 0;
}
int main()
{
int m=0;
List L;
/*Createlist(&L,3);
print(&L);
printf("\n");*/
Init(&L);
for(m=0;m<10;m++)
Insert(&L,m,m);
print(&L);
printf("\n");
Delete(&L,2);
print(&L);
printf("\n");
printf("%d\n",Locate(&L,4));
return 0;
}
#define max 100
typedef struct{
int data[max];
int last;
}List;
void Init(List *L)//顺序表初始化
{
//L.data[0]=0;
L->last=0;
}
void Createlist(List *L,int n)
{
int i;
printf("请输入顺序表元素:\n");
for(i=0;i<n;i++)
{
scanf("%d",&(L->data[i]));
L->last=n;
}
}
int Locate(List *L,int x)//查找链表中第一个与x相等的元素的位置
{
int i=0;
while((i<L->last)&&(L->data[i]!=x))
i++;
if(i<L->last)
return i;
else
return 0;
}
int Insert( List *L,int i,int x)//在第i个元素后面插入一个元素x
{
int j;
if(i>L->last||i<0)
{
printf("插入失败!\n");
return 0;
}
for(j=L->last;j>=i;j--)
L->data[j+1]=L->data[j];
L->data[i]=x;
L->last=L->last+1;
return 0;
}
int Delete(List *L,int i)//删除第i个元素
{
int j;
if(i<0||i>L->last)
{
printf("位置不合法!\n");
return 0;
}
for(j=i;j<L->last;j++)
L->data[j]=L->data[j+1];
L->last=L->last-1;
return 0;
}
int print(List *L)
{
int i=0;
if(L->last<=0)
{
printf("表中没有元素!\n");
return 0;
}
for(i=0;i<=L->last;i++)
{
printf("%d ",L->data[i]);
//i++;
}
return 0;
}
int main()
{
int m=0;
List L;
/*Createlist(&L,3);
print(&L);
printf("\n");*/
Init(&L);
for(m=0;m<10;m++)
Insert(&L,m,m);
print(&L);
printf("\n");
Delete(&L,2);
print(&L);
printf("\n");
printf("%d\n",Locate(&L,4));
return 0;
}
相关文章推荐
- Lua教程(五):C/C++操作Lua数组和字符串示例
- C/C++实现快速排序的方法
- C/C++常用函数易错点分析
- Mac下使用Eclipse编译C/C++文件出现 launch failed, binary not found 解决方案
- 把Lua函数传递到C/C++中实例
- C/C++中退出线程的四种解决方法
- 浅析C/C++中sort函数的用法
- Notepad++配置C/C++IDE(详细)
- C 堆栈,运行时类型挷定
- 初识libjpeg
- 【推荐】The Function Pointer Tutorials
- 分享自己写的一个贪吃蛇的游戏(Linux)
- 分享一个蛋疼的俄罗斯方块小游戏
- Linux下的字符界面扫雷游戏
- linux下的图形界面扫雷游戏(Gtk+2.0)
- for_each宏
- 让android支持RTSP及live555分析
- C++ Template中防止使用不完整类型
- Windows平台下如何检测C/C++内存泄露?
- C++中指定小数位数输出