首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

用c兑现顺序表的增加与删除

2012-12-22 
用c实现顺序表的增加与删除#include stdio.h#include conio.h#define MaxSize 10typedef int ElemType

用c实现顺序表的增加与删除

#include "stdio.h"#include "conio.h"#define MaxSize 10typedef int ElemType;typedef struct{int * elem;int length;int listsize;}Sqlist;void initSqlist(Sqlist *L){ L->elem=(int*)malloc(MaxSize*sizeof(ElemType)); if(!L->elem)exit(0); L->length=0; L->listsize=MaxSize;}void InsertElem(Sqlist *L,int i,ElemType item){ ElemType *base,*insertPtr,*p; if(i<1||i>L->length+1)exit(0); if(L->length>=L->listsize){  base =(ElemType*)realloc(L->elem,(L->listsize+10)*sizeof(ElemType));  L->elem=base;  L->listsize=L->listsize+100;  }  insertPtr=&(L->elem[i-1]);  for(p=&(L->elem[L->length-1]);p>=insertPtr;p--)  *(p+1)=*p;  *insertPtr=item;  L->length++;}void DelElem(Sqlist *L,int i){  ElemType *delItem,*q;   if(i<1||i>L->length)exit(0);   delItem=&(L->elem[i-1]);   q=L->elem+L->length-1;   for(++delItem;delItem<=q;++delItem) *(delItem-1)=*delItem;   L->length--;}main(){Sqlist l;int i;initSqlist(&l);system("cls");printf("init....");printf("%d\n",l.listsize);for(i=0;i<=8;i++) {printf("%d\n",i+1);InsertElem(&l,i+1,i+1);}printf("\nelem is:\n");for(i=0;i<l.length;i++)printf("%d\n",l.elem[i]);DelElem(&l,5);for(i=0;i<l.length;i++)printf("%d\n",l.elem[i]); getche();}

热点排行