顺序表的建立与插入操作

王朝other·作者佚名  2006-01-10
窄屏简体版  字體: |||超大  

试验报告

――顺序表的建立与插入操作

计科(3)--苗杰

2005年9月6日

#include <iostream>

using namespace std; //使用标准c++

const int list_init_size=10;

const int listincrement=1;

const int TRUE=1;

const int FALSE=0;

const int ok=1;

const int error=0;

typedef int status;

typedef struct

{

int* elem;

int length;

int listsize;

}sqlist;

int main()

{

int j,num; //第j个元素前插入数据num

sqlist M;

status list_init(sqlist &L);

status list_output(sqlist &L);

status list_insert(sqlist &L,int i,int e); //函数的声明

list_init(M); //初始化一个表(函数的调用)

M.length =6; //欲建立一个6个元素的表

for(int i=0;i<6 ;i++)

cin>>M.elem [i]; //用户输入数据

list_output(M);//输出(函数的调用)

cout<<endl;

cin>>j>>num;

list_insert(M,j,num); //插入用户输入的数据

cout<<endl;

list_output(M);

return ok;

}

status list_init(sqlist &L) //初始化表的函数定义

{

L.elem =(int*)malloc(list_init_size*sizeof(int));

if (!L.elem ) exit(error);

L.length =0;

L.listsize =list_init_size;

return ok;

}

status list_output(sqlist &L) //输出一个表的函数定义

{

for(int i=0;i<L.length ;i++)

cout<<L.elem [i]<<" ";

return ok;

}

status list_insert(sqlist &L,int i,int e) //插入一个元素的函数定义

{

int* newbase,*p,*q;

if(i<1 || i>L.length +1) return error;

if (L.length >=L.listsize )

{

newbase=(int*)realloc(L.elem ,(L.listsize +listincrement)*sizeof(int));

if (!newbase) exit(error);

L.elem =newbase;

L.listsize +=listincrement;

}

q=&(L.elem [i-1]);

for (p=&(L.elem [L.length -1]);p>=q;--p)

*(p+1)=*p;

*q=e;

++L.length ;

return ok;

}

试验数据

D:\>sqlist.exe

23 ↙

11 ↙

7 ↙

9 ↙

14 ↙

26 ↙

23 11 7 9 14 26

5 88↙ (在第五个位置插入)

23 11 7 9 88 14 26

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航