CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  专题开发/技术/项目 >  数据结构与算法

如何在顺序线性表中实现插入(C语言)

楼主bene_pro((菜))2002-05-09 12:52:00 在 专题开发/技术/项目 / 数据结构与算法 提问

如何在顺序线性表中实现插入(C语言).向空线性表输入4/7/8三个数,要求输出存放在线性表中的值。请符上上机程序。 问题点数:10、回复次数:1Top

1 楼mylove0618(ADT)回复于 2002-05-16 17:27:37 得分 10

#include<stdio.h>  
  #include<conio.h>  
  #include<stdlib.h>  
  #define   MAXLENGTH   255  
  #define   OVERFLOW   -1  
  #define   OK   1  
  #define   ERROR   0  
  #define   LISTINCREMENT   10  
  typedef   int   status;  
  typedef   struct{  
      int   *elem;  
      int   length;//表示表中元素数目  
      int   listsize;//表示表的长度  
  }SqList;  
  status   InitList(SqList*   list){  
      list->elem=(int*)malloc(MAXLENGTH*sizeof(int));  
      if(!list->elem)exit(OVERFLOW);  
      list->length=0;  
      list->listsize=MAXLENGTH;  
      return   OK;  
  }  
  status   InsertList(SqList*   list,int   i,int   e){  
      int   *newbase;//一旦表不够长,重新申请空间所用  
      int   *p,*q;  
      if((i<1)||(i>list->length+1))   return   ERROR;//插入位置不能为0或负,也不能大于表长  
      if(list->length>=list->listsize){  
          newbase=(int   *)realloc(list->elem,(list->listsize+LISTINCREMENT)   *sizeof(int));    
          if(!newbase)exit(OVERFLOW);  
          list->elem=newbase;  
          list->listsize+=LISTINCREMENT;  
      }  
      q=(list->elem)+i-1;  
      for(p=list->elem+list->length-1;p>=q;p--)   *(p+1)=*p;  
      *q=e;  
      ++list->length;  
      return   OK;  
  }  
  void   PrintList(SqList*   list){  
      int   i;  
      printf("\nNOW   begin   to   print   :\n");  
      for(i=0;i<list->length;i++){  
          if(i%8==0)printf("\n");  
          printf("%5d",list->elem[i]);  
      }  
      printf("\n\nThe   program   has   printed   the   result.\n");  
  }  
  void   main(){  
      SqList   *list=(SqList*)malloc(sizeof(SqList));  
      int   location,value;//location表示插入位置,value表示插入值  
      char   yn;//判断是否继续插入  
      system("cls");//清屏  
      printf("\nThis   is   a   list   program   .\n");  
      InitList(list);  
      InsertList(list,1,4);  
      InsertList(list,2,7);  
      InsertList(list,3,8);  
      PrintList(list);  
      for(;;){  
          printf("\nWould   you   like   to   insert   some   datas?('y'   or   'n')\n");  
          scanf("%c",&yn);  
          getchar();  
          if(yn=='y'){  
              printf("\nThe   location   ?\n");  
              scanf("%d",&location);  
              printf("\nThe   value?\n");  
              scanf("%d",&value);  
              InsertList(list,location,value);  
          }  
          else   break;  
      }  
      printf("\nWe'll   print   the   list   at   last   :\n");  
      PrintList(list);  
      free(list);  
      printf("\nThe   program   end   .\n");  
      getch();  
  }  
   
   
   
  已经在vc下运行通过。  
  Top

相关问题

  • 急:在线等待:怎么样用C++编写用数组的方法定义线性表 ,C++编写 线性表的顺序存储
  • 按正确顺序插入数字的简单C程序我看不懂啊!
  • 顺序表的插入问题
  • 顺序表的插入问题!!
  • 关于sql数据的插入顺序
  • SQL插入记录顺序的疑惑!
  • 数据顺序插入问题~!
  • c的线性链表排序。
  • 用c++怎么定义线性表?
  • 写了一个简单的线性表顺序表,看看有啥问题?

关键词

  • program
  • 插入
  • sqlist
  • insertlist
  • newbase
  • 线性表
  • listsize
  • listincrement
  • nthe
  • printlist

得分解答快速导航

  • 帖主:bene_pro
  • mylove0618

相关链接

  • CSDN Blog
  • 技术文档
  • 代码下载
  • 第二书店
  • 读书频道

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo