顺序表

来源:互联网 发布:eclipse python 开发 编辑:程序博客网 时间:2024/04/27 00:48

#include "stdio.h"
#include "malloc.h"
#define Maxsize 50
typedef int datatype;

typedef struct
{
 datatype data[Maxsize];
 int length;
}LinkList;

LinkList *InitList()
{
 LinkList *S;
 S=(LinkList *)malloc(sizeof(LinkList));
 printf("初使化顺序表!/n");
 if(!S)
 {
  printf("空间不足");
  return NULL;
 }else
 {
  S->length=0;
  return S;
 }
}

LinkList *createList(LinkList *L)
{
 int n,i;
 char tmp;
 printf("请输入数据的个数:/n");
 scanf("%d",&n);
 for(i=0;i<n;i++)
 {
  printf("data[%d]=",i);
  fflush(stdin);
  scanf("%d",&tmp);
  L->data[i]=tmp;
  L->length++;
 }
 //L->length=n-1;
 return L;
 printf("/n");
}

void DisplayList(LinkList *s)
{
 int i;
 if(s->length==0){
  printf("这是一个空表");
 }else{
  for(i=0;i<s->length;i++)
  {
   printf("data[%d]=",i);
   printf("%d",s->data[i]);
   printf("/n");
  }
 }
}

LinkList *ListInsert(LinkList *L,datatype data,int i)
{
 int j;
 if(L->length==Maxsize-1)
 {
  printf("顺序表以达最大!不可再插入!");
  return 0;
 }
 else if((i<0)||(i>L->length-1))
  {
   printf("插入的位置不对,请重新输入!");
   return 0;
  }
  else
  {
   for(j=L->length;j>=i;j--)
   {
    L->data[j+1]=L->data[j];

   }
   L->data[i]=data;
   L->length=L->length+1;
  }
 return L;
}

LinkList *ListDel(LinkList *L,int p)
{
 int j;
 if(p<0||p>L->length-1)
 {
  printf("所要删除的位置不对,请重新选择位置!");
 }
 else
 {
  for(j=p;j<=L->length-1;j++)
  {
   L->data[j]=L->data[j+1];

  }
  //L->data[i]=data;
  L->length=L->length-1;
 }
 return L;
}
int main(){
 int num,point;
 LinkList *p;
 p=InitList();
 createList(p);
 
 printf("输出这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");
 
 printf("请输入要插的数据!");
 scanf("%d",&num);
 printf("请输入要插的位置!");
 scanf("%d",&point);
 ListInsert(p,num,point);

 printf("输出插入一个数据后,这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");

 printf("请选择你所要删除数据的位置!");
 scanf("%d",&point);
 ListDel(p,point);

 printf("输出插入一个数据后,这个顺序表的值:/n");
 DisplayList(p);
 printf("/n");

原创粉丝点击