每天一个C++小程序(十六)--线性表
2014-05-05 20:02
190 查看
#include<stdio.h> #define MaxSize 50 typedef char ElemType; struct List { ElemType list[MaxSize]; int size; } setnull(struct List *p)//置空 { p->size=0; } int length(struct List *p)//求长度 { return (p->size); } ElemType get(struct List *p,int i)//取第i歌节点 { if(i<1&&i>p->size) printf("位置参数error!/n"); else return(p->list[i-1]); } int locate(struct List *p,ElemType x)//定位 { int i=0; while(i<p->size&&p->list[i]!=x) i++; if(i==p->size) return(-1); else return(i+1); } void insert(struct List *p,ElemType x,int i)//插入结点 { int j; if(i<1||i>p->size+1) printf("位置参数error!/n"); else { p->size++; for(j=p->size-1;j>=i;j--) p->list[j]=p->list[j-1]; p->list[j]=x; } } void del(struct List *p,int i) { int j; if(i<1&&i>p->size+1) printf("位置参数error!/n"); else { for(j=i-1;j<p->size-1;j++)//结点前移 p->list[j]=p->list[j+1]; p->size--; } } display(struct List *p) { int j; if(p->size==0) printf("Empty rable!/n"); else { printf("顺序表:/n"); if(p->size==1) printf("%c",p->list[p->size]); else { for(j=0;j<p->size-1;j++) printf("%c->",p->list[j]); printf("%c",p->list[j]); } printf("/n"); } } main() { struct List L; setnull(&L); insert(&L,'a',1); insert(&L,'s',1); insert(&L,'f',2); insert(&L,'d',1); insert(&L,'z',3); insert(&L,'c',2); display(&L); printf("值%c位置:%5d/n:",'a',locate(&L,'a')); printf("delete the second element~/n"); del(&L,2); display(&L); printf("delete the first element~/n"); del(&L,1); display(&L); }
#include<stdio.h>
#define MaxSize 50
typedef char ElemType;
struct List
{
ElemType list[MaxSize];
int size;
}
setnull(struct List *p)//置空
{
p->size=0;
}
int length(struct List *p)//求长度
{
return (p->size);
}
ElemType get(struct List *p,int i)//取第i歌节点
{
if(i<1&&i>p->size)
printf("位置参数error!/n");
else
return(p->list[i-1]);
}
int locate(struct List *p,ElemType x)//定位
{
int i=0;
while(i<p->size&&p->list[i]!=x) i++;
if(i==p->size)
return(-1);
else
return(i+1);
}
void insert(struct List *p,ElemType x,int i)//插入结点
{
int j;
if(i<1||i>p->size+1)
printf("位置参数error!/n");
else
{
p->size++;
for(j=p->size-1;j>=i;j--)
p->list[j]=p->list[j-1];
p->list[j]=x;
}
}
void del(struct List *p,int i)
{
int j;
if(i<1&&i>p->size+1)
printf("位置参数error!/n");
else
{
for(j=i-1;j<p->size-1;j++)//结点前移
p->list[j]=p->list[j+1];
p->size--;
}
}
display(struct List *p)
{
int j;
if(p->size==0)
printf("Empty rable!/n");
else
{
printf("顺序表:/n");
if(p->size==1)
printf("%c",p->list[p->size]);
else
{
for(j=0;j<p->size-1;j++)
printf("%c->",p->list[j]);
printf("%c",p->list[j]);
}
printf("/n");
}
}
main()
{
struct List L;
setnull(&L);
insert(&L,'a',1);
insert(&L,'s',1);
insert(&L,'f',2);
insert(&L,'d',1);
insert(&L,'z',3);
insert(&L,'c',2);
display(&L);
printf("值%c位置:%5d/n:",'a',locate(&L,'a'));
printf("delete the second element~/n");
del(&L,2);
display(&L);
printf("delete the first element~/n");
del(&L,1);
display(&L);
}
相关文章推荐
- 每天一个小程序(7)——C++中sort函数的应用
- 每天一个C++小程序(二十)--简单的飘雪程序
- 每天一个C++小程序(十七)--矩阵链乘
- 每天一个C++小程序(十八)--插入排序
- 每天一个c++小程序(2):二维数组动态创建
- 每天一个C++小程序(十九)--桶排序
- 每天一个C++小程序(十五)--快速排序
- 每天一个C++小程序(求圆面积)
- 每天一个C++小程序(求线段长度)
- 每天一个c++小程序(1):快速排序
- 每天一个C++小程序(十四)--堆排序
- 每天一个小程序——插入排序实现!
- hadoop streamig 运行c/c++程序 少读一个字符
- 一个C++编写的控制台程序
- 一个简单的录音软件程序代码【C++】
- 解答: 一个简单的c++程序
- 每日一个C++小程序(五)--根据坐标求矩阵面积
- 用C++编写一个随机产生多个两位数四则运算式子的简单程序
- 一个简单的C++程序反汇编解析
- 每天一个java小程序-3