琥珀玲珑
琥珀玲珑的世界,也是你们的世界哦。大家一起来吧!!!!

#include<stdio.h>
#include<stdlib.h>
#define OK 1
#define ERROR 0
typedef char Status;     //换名
#define List_Size 10
typedef struct               //换名
{
 char *elem;                //成员指针
 int length;                  //长度
 int listsize;                 //现有的长度
}SqList;
SqList C_NullList()                         //初始化顺序表
//void C_NullList()
{
 SqList L;
 L.elem=(Status *)malloc(List_Size *sizeof(Status));           //创建类型的Status *(还是指针),长度为List_Size的顺序表,顺序表里元素的类型也为Status
 if(!L.elem)
  exit(ERROR);
 L.length=0;
 L.listsize=List_Size; 
 return L;
}
void Create_Sq(SqList &L)                  //给顺序表赋入元素
{
 int ch;
 printf("请输入元素:");
 ch=getchar();
 while(ch!='#')
 {
  L.elem[L.length++]=ch;
  /*if(L.length>List_Size)
  {
   printf("");
   exit(ERROR);
  }*/
  ch=getchar();
  //scanf("%c",&ch);
 }
 L.length--;
}
void Display_Sq(SqList &L)                     //显示顺序表里的元素
{
 if(L.elem==NULL)
 {
  printf("L 顺序表为空!");
  exit(ERROR);
 }
 printf("请输出元素:");
 for(int i=1;i<=L.length;i++)
 {
  if(i!=L.length)
   printf("%c->",L.elem[i]);
  else 
  {
   putchar(L.elem[i]);
   putchar('\n');
   //printf("%c\n",L.elem[i]);
  }
 }
}
void Insert_Sq(SqList &L)                  //插入元素
{
 int n;
 Status *p,*q;
 Status ch;
 if(!L.elem)
 {
  printf("不存在 L 顺序表!");
  exit(ERROR);
 } 
 printf("请输入插入的位置和元素:");
 scanf("%d %c",&n,&ch);
 if(n<=L.length)
 {
  q=&(L.elem[n]);
  for(p=&(L.elem[L.length]);p>=q;p--)
   *(p+1)=*p;
  *q=ch;
  L.length++;
 }
 else
  printf("你输入的位置大于顺序表的长度!\n");
}
void Delete_Sq(SqList &L)                             //删除元素
{
 int n;
 Status *p,*q;
 printf("请输入删除的位置:");
 scanf("%d",&n);
 if(n<=L.length)
 {
  q=&(L.elem[L.length]);
  p=&(L.elem[n]);
  printf("输出删除的元素:%c\n",*p);
  while(p<=q)
  {
   *p=*(p+1);
   p++;
  }  
  L.length--;
 }
}
void JieMian_Sq()
{
 SqList L;
 int n,m=0;
 L=C_NullList();
 printf("  ******************************顺序表的操作*******************************\n\n");
 printf("         1.创建顺序表      2.输出顺序表     3.插入元素       4.删除元素    \n\n");
 printf("                                   5.退出                                  \n\n");
 printf("  *************************************************************************\n\n");
 while(m==0)
 {
  printf("输入操作序号:");
  scanf("%d",&n);
  switch(n)
  {
  case 1:Create_Sq(L);break;
  case 2:Display_Sq(L);break;
  case 3:Insert_Sq(L);break;
  case 4:Delete_Sq(L);break;
  case 5:m++;printf("                    退出!                  \n");break;
  default:printf("输入错误!");break;
  }
 }
}
int main()

 JieMian_Sq();
 return OK;
}

posted on 2013-11-17 14:09  琥珀玲珑  阅读(274)  评论(0编辑  收藏  举报