汇编网首页登录博客注册
chinatree的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
友情链接

[2011-10-11 16:47] C语言顺序表

#include "stdio.h"
#include "malloc.h"
#include "mem.h"                        /*memset在这*/
#include "dos.h"                        /*sleep在这*/
#define  NULL 0
typedef struct abc                        /*定义表结构*/
{
   int a[100];
   int b;
}AB;
AB * create()                                /*建表*/
{  AB * p;
   p=(AB *)malloc(sizeof(AB));
   return p;
}
char full(AB *p)                        /*测试表满*/
{
   return (p->b>99)?1:0;
}
char kong(AB * p)                        /*测试表空*/
{
   return (p->b<=0)?1:0;
}
void insert(AB * p,int q,int j)         /*入表*/
{
   if(full(p))
     {
      printf("list full!\n");
      sleep(1);
      return ;
     }
   else if(j==NULL)
     {
      p->a[p->b]=q;
      p->b++;
      printf("%d   ",q);
      printf("number %d\n",p->b);
      sleep(1);                                /*延时1秒*/
      return ;
     }
   else
   {
     int i=98-j;
     while(i--)
       p->a[j+i+1]=p->a[j+i];                /**/
       p->a[j]=q;
       p->b++;
       printf("insert OK!  number %d\n",p->b);
       sleep(1);
    }

    return ;
}
void deleted(AB * p,int q,int j)/*出表*/
{
   if(kong(p))
      {
         printf("list kong!\n");
         sleep(2);
         return ;
      }
   else if(j==NULL)
    {
      q=p->a[p->b];
      p->a[p->b--]=0;
      printf("\ndelete %d\n",q);
      printf("number %d\n",p->b);
      sleep(2);
      return ;
     }
     else
       q=p->a[j];
      while(j<99)
       {
        p->a[j]=p->a[++j];
       }
       p->b--;
       printf("delete %d\n",q);
       printf("delete OK!number %d\n",p->b);
       sleep(1);
     return ;
}
void traverse(AB * p)/*遍历输出*/
{
   int i=p->b;
   if (!i)
     {
       printf("\nNULL!\n");
       sleep(1);
       return;
     }
     else
   while(i)
     {
      printf("%d  ",p->a[(p->b)-i]);                /*不为0就输出*/
      i--;
     }
      sleep(3);
      return ;
}
int main(void)
{
   int s,z;
   AB *ab;                                        
   ab=create();                                        /*分配空间*/
   memset(ab,0,sizeof(int)*101);                /*空间填零*/
   while(1)
   {
      clrscr();                                        /*清屏函数*/
      printf("1.insert\n");
      printf("2.delete\n");
      printf("3.traverse\n");
      s=getch();                                /*取按键ascii*/
      if(s==0x1b) break;                        /*ESC退出*/
      else if(s<0x31||s>0x33) continue;
      else
    switch(s)
     {
       case 0x31:                                 /*数字1写入*/
          printf("Please input two number!\n");
          scanf("%d%d",&s,&z);                        /*位置不对就是追加*/
          if (z>99||0)
            insert(ab,s,NULL);
          else
            insert(ab,s,z);
          break;
       case 0x32:
         printf("where delete?\n");                /*2是删除*/
         scanf("%d",&z);
         if (z>99||0)
           {
            printf("delete :");                        /*位置不对就删除最后进表的那个*/
            deleted(ab,s,NULL);
            }
          else
           {
            printf("delet:");
            deleted(ab,s,z);
            }
           break;
       case 0x33:
          traverse(ab);break;                      /*遍历输出*/      
       }
    }
   free(ab);                                        /*释放空间*/
   return 0;
}

http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=41617&pic=pic_1318322629187.jpg" alt="图">
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=41617&pic=pic_1318322616140.jpg" alt="图">
http://www.asmedu.net/blog/user/bigimg.jsp?neighborId=41617&pic=pic_1318322616140.jpg" alt="图">
评论次数(0)  |  浏览次数(781)  |  类型(默认类型) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码