文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>顺序表插入-C语言实现

顺序表插入-C语言实现

时间:2010-11-06  来源:shinaimiao

#include <stdlib.h>
#include <stdio.h>
  #define OVERFLOW -2
#define OK 1
#define ERROR 0
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
  typedef int ElemType;
typedef int Status;
  typedef struct
{
 ElemType *elem;
 int length;
 int listsize;
}SqList;
  Status InitList_Sq(SqList *L)
{
 L->elem=(ElemType *)malloc(LIST_INIT_SIZE * sizeof(ElemType));
 if(!L->elem)exit(ERROR);
 L->length=0;
 L->listsize=LIST_INIT_SIZE;
 return OK;
}

void Create_SqList(SqList *L)
{
 int c,i=0;
 int *newBase;
 printf("请输入顺序表元素,按ctrl+z结束语:\n");
 while((scanf("%d",&c))!=EOF)
 {
  if(i>=L->listsize)
  {
   newBase=(ElemType *)realloc(L->elem,(L->listsize+LISTINCREMENT)*sizeof(ElemType));
   if(!newBase)exit (OVERFLOW);
   L->elem=newBase;
   L->listsize+=LISTINCREMENT;
  }
  L->elem[i++]=c;
 }
 L->length=i;
 printf("输入的顺序表元素是:\n");
 for(i=0;i<L->length;i++)
  printf("%3d ",L->elem[i]);
 printf("\n");
}
  Status ListInsert(SqList *L,int i,ElemType e)
{
 ElemType *p,*q,*newbase;
 if(i<1 || i>L->length+1)
 {
  printf("插入位置错误\n");
  return(ERROR);
 }
 if(L->length>=L->listsize)
 {
  newbase=(ElemType *)realloc(L->elem,(L->listsize+LISTINCREMENT) * sizeof(ElemType));
  if(!newbase)exit(OVERFLOW);
  L->elem=newbase;
  L->listsize+=LISTINCREMENT;
 }
 if(i == L->length)L->elem[i+1]=e;
 q = &(L->elem[i-1]);
 for (p = &(L->elem[L->length-1]);p >= q;--p)
  *(p+1)=*p;
 *(p+1)=e;/*由csdn网绿色改正,P此时已经指到插入位置前一个位置*/
 ++L->length;
 return OK;
}
 
void main()
{
 SqList L;
 int location,element;
 if(!InitList_Sq(&L))
 {
  printf("初始化顺序表失败!\n");
  exit(ERROR);
 }
 Create_SqList(&L);
 printf("输入插入位置:");
 scanf("%d ",&location);
 while(location > L.length + 1 || location < 1)
 {
  printf("输入位置错误,请重新输入!\n");
  scanf("%d ",&location);
 }
 printf("输入插入元素:");
 scanf("%d ",&element);
 if(!ListInsert(&L,location,element))
 {
  printf("顺序表插入失败!");
  exit(ERROR);
 }
 printf("插入后的顺序表为:\n");
 for(int i = 0;i<=L.length-1;i++)
 {
  printf("%d ",L.elem[i]);
 }
 printf("\n新顺序表一共%d个元素。\n",L.length);
}
 
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载