順序表的初始化 刪除 插入

2021-05-09 23:25:34 字數 1666 閱讀 6019

//初始化線性表

#include

#include

#include

#define list_init_size 100

#define listincrement 10

#define ok 1

#define error 0

#define overflow -2

struct sqlist

char *elem;

int length;

int listsize;

int initlist(sqlist *l)

l->elem=(char *)malloc(list_init_size*sizeof(char));

if(!l->elem)

printf("malloc error!/n");

exit(overflow);

l->length=0;

l->listsize=list_init_size;

return ok;

int listinsert(sqlist *l,int i,char e)

char *newbase;

char *q,*p;

// 在順序線性l中第i個位置之前插入新的元素

if(i<1||i>l->length+1)

return error;

if(l->length>=l->listsize)

newbase=(char *)realloc(l->elem,(listincrement+list_init_size)*sizeof(char));

if(!newbase)

exit(overflow);

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;

int listdel(sqlist *l,int i,char *e)//在順序線性l中刪除第i個元素,並用e返回其值

char *p,*q;

if(i<1||i>l->length)

return error;

p=&(l->elem[i-1]);

*e=*p;

q=l->elem+l->length-1;

for(++p;p<=q;++p)

*(p-1)=*p;

--l->length;

return ok;

void print(sqlist *l)

int i;

for(i=0;ilength;i++)

printf("%c/n",l->elem[i]);

int main()

sqlist l;

char elem;

initlist(&l);

listinsert(&l,1,'a');

listinsert(&l,2,'b');

print(&l);

listdel(&l,1,&elem);

printf("del:%c/n",elem);

print(&l);

return ok;

順序表的初始化 插入 刪除

昨天晚上做了中移動蘇州軟體公司的暑期實習崗的筆試題,感覺備受打擊,尤其是自以為是的資料結構題 從快排 歸併排序 堆排序中選一種實現 碎決定再次學習資料結構一次,並將重要的資料結構用程式實現。這裡先實現的是順序表的初始化,插入和刪除操作。include using namespace std 線性表的...

靜態順序表的初始化以及插入刪除操作

在編寫之前首先需要說明,在使用c語言編寫時,在自定義外函式 也就是在main函式體之外 體內不能使用 符號以及 符號,取而代之的是 號以及 符號 1.首先是靜態順序表結構體的編寫 typedef struct sqlist 2.初始化 void initlist sqlist l 3.插入操作 bo...

順序表實現初始化 插入 刪除 銷毀等操作

include include using namespace std define error 0 define ok 1 define overflow 1 define list init size 100 根據實際情況,調整初始分配空間大小 define listincrement 10 當...