Seqlist

#include <stdio.h>
#include <stdlib.h>
//#include <stdbool.h> //about bool
#define MAXSIZE 100
#define ElemType int
typedef struct
 {
  ElemType data[MAXSIZE];
  int last;
 }Seqlist;


Seqlist SeqlistInit()
 {
  Seqlist L;
  L.last=0;
  return L;
 }

int Seqlistlocate(Seqlist L,ElemType x)
 {
  int i=0;
  while(i<=L.last&&L.data[i]!=x)
   i++;
  if(i<=L.last) return i;
  else return -1;
 }

Seqlist clear(Seqlist L)
 {
  L.last=0;
  return L; 
 }

bool isempty(Seqlist L)
  {
   if (L.last==0) 
    return true;
   else
    return false;
  }

int pre(Seqlist L,ElemType x)
  {
  if(Seqlistlocate(L,x)>0)
   return L.data[Seqlistlocate(L,x)-1];
  else return -1;
  }

int next(Seqlist L,ElemType x)
  {
   if(Seqlistlocate(L,x)!=L.last-1)
    return L.data[Seqlistlocate(L,x)+1];
   else return -1;
  }

Seqlist SeqlistInsert(Seqlist L, int i,ElemType x)
  {
   int j;
   if(L.last==MAXSIZE)
   {printf("表滿/n");exit(0);}
   if(i<1||i>L.last+1)
   {printf("插入位置錯/n");exit(0);}
   for(j=L.last-1;j<=i-1;j--)
    L.data[j+1]=L.data[j];
   L.data[i-1]=x;
   L.last++;
   return(L);
  }

Seqlist Seqlistdelete(Seqlist L, int i)
 {
  int j;
  if(i<1||i>L.last)
   {printf("位置非法/n");exit(0);}
  for(j=i;j<L.last-1;j++)
   L.data[j-1]=L.data[j];
  L.last--;
  return(L);
 }


void main(void)
 {
  int i;
  int num1,num2,num3;
  Seqlist list;
     list=SeqlistInit();
  list.last=10;
  for(i=0;i<list.last;i++)
   scanf("%d",&list.data[i]);
  for(i=0;i<list.last;i++)
   printf("%d ",list.data[i]);
  printf("/n");
  //SeqlistInit(list);
  printf("請輸入你要所找的元素:");
  scanf("%d",&num1);
  printf("你所找的元素的位置爲:");
  printf("%d",Seqlistlocate(list,num1));
  printf("/n");
  printf("請輸入你要所找的元素:");
  scanf("%d",&num2);
  printf("你所找的元素的前驅爲:");
  printf("%d",pre(list,num2));
  printf("/n");
  printf("請輸入你要所找的元素:");
  scanf("%d",&num3);
  printf("你所找的元素的後驅爲:");
  printf("%d",next(list,num3));
  printf("/n");
 }
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章