Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2036328
  • 博文数量: 610
  • 博客积分: 11499
  • 博客等级: 上将
  • 技术积分: 5511
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-12 19:27
文章分类

全部博文(610)

文章存档

2016年(5)

2015年(18)

2014年(12)

2013年(16)

2012年(297)

2011年(45)

2010年(37)

2009年(79)

2008年(101)

分类: LINUX

2010-06-13 14:06:42

/*
用C语言编写一个程序,实现顺序表的各种基本运算,以下各功能分别用一个函数来实现,并在此基础上设计一个主函数进行验证各函数的正确性:
(1)初始化顺序表L。(必做)
(2)输出顺序表L。(必做)
(3)输出顺序表L的长度。(必做)
(4)判断顺序表L是否为空。
(5)输出顺序表L的第i个元素的值。
(6)输出元素x的位置。
(7)在第i个元素位置上插入x元素。
(8)删除L的第i个元素。
(9)删除L中值为x的元素。
注:(1)~(3)为必做的内容,(4)~(9)可任选两个。
*/
/*
缺点为:
1.数组的大小缺乏动态分配
2.链表的容量不能动态增加
*/
#include
typedef int ElemType;
#define MaxSize 1024
typedef struct
{
  ElemType data[MaxSize];
  int length;
  int list_size;
 }SqList,*pSqList;
 /*
 (1)初始化顺序表L。(必做)
 */
void InitList(SqList &L)

  L.length=0;
}
 /*
 (1)输出顺序表L。。(必做)
 */
int GetLength(SqList L)
{
 return L.length;
}
int GetElem(SqList L,int i,ElemType &e)
{
   if (i<1||i>L.length)
    {
      return 0;
 }
  else
  { 
    e=L.data[i-1];
    return 1;
  }
}
int Locate(SqList L,ElemType x)
{
 int i=0;
 while (L.data[i]!=x)
 {
     i++;
 }
 if (i>L.length)
 {
     return (0);
 }
 else
 {
     return(i+1);
 }
}
int InsElem(SqList &L,ElemType x,int i)

 int j;
   if(i<1||i>L.length+1)
   {
     return 0;
   }
   for(j=L.length;j>i;j--)
   {
       L.data[j]=L.data[j-1];
   }
   L.data[i-1]=x;
   L.length++;
   return 1;
}
int DelElem(SqList &L,int i)
{  
 int j;
    if(i<1||i>L.length)
 {
      return 0;
 }
    for(j=i;j {
      L.data[j-1]=L.data[j];
  }
    L.length--;
    return 1;
}
void DispList(SqList L)
{  int i;
   for(i=1;i<=L.length;i++)
      printf("%c",L.data[i-1]);
   printf("\n");
}
/*
  合并两个线性顺序表
*/
int MergerList(SqList & pa,SqList &pb,SqList &pc)
{
   
 return 1;
}
int  main(char argc,char ** argv)
{
  int i;
  ElemType e;
  SqList L;
  InitList(L);
  InsElem(L,'a',1);
  InsElem(L,'c',2);
  InsElem(L,'a',3);
  InsElem(L,'e',4);
  InsElem(L,'d',5);
  InsElem(L,'b',6);
  printf("xian xing biao:");
  DispList(L);
  printf("chang du:%d\n",GetLength(L));
  i=3;GetElem(L,i,e);
  printf("di %d ge yuan su :%c\n",i,e);
  e='a';
  printf("yuan su %c shi di %d ge yuan su\n",e,Locate(L,e));
  i=4;printf("shan chu di %d ge yuan su\n",i);
  DelElem(L,i);
  printf("xian xing biao:");DispList(L);
  return 0;
  }
阅读(1789) | 评论(0) | 转发(0) |
0

上一篇:双向循环链表

下一篇:走迷宫(栈)

给主人留下些什么吧!~~