您的位置:首页 > 编程语言 > C语言/C++

每天一个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);  

}  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  C++ 每日一C++