簡單的順序表

2021-07-25 03:57:28 字數 3739 閱讀 1675

#include

#include

#define init_size   100   // 順序表初始化大小

#define incess_size 20    // 順序表滿後的每次擴充大小

#define ok            0

#define error        -1

#define malloc_error -2

typedef int elementtype;  // 順序表元素型別

typedef struct _sqlist

sqlist;                  // 重新命名結構體型別

// 初始化順序表

int init_list(sqlist *sqlist)

// 建立順序表空間

sqlist->list = (elementtype*)malloc(init_size*sizeof(elementtype)/sizeof(char));

if (sqlist->list == null)

sqlist->leng     = 0;

sqlist->max_len  = init_size;

return ok;

}// 擴充空間

int againmalloc(sqlist *sqlist)

elementtype *newbase = (elementtype*)realloc(sqlist->list, (sqlist->max_len+incess_size)*sizeof(elementtype)/sizeof(char));

if (newbase == null)

sqlist->list = newbase;

sqlist->max_len += incess_size;

return ok;

}// 頭插法

int insert_head(sqlist *s, elementtype data)

// 判斷順序表有沒有滿

if (s->leng == s->max_len)

}int i;

for (i = s->leng-1; i >= 0; i--)

// 在pos位置插入新資料

s->list[0] = data;

s->leng++;

return ok;

}// 尾插法

int insert_last(sqlist *sqlist, elementtype newdata)

// 判斷順序表有沒有滿

if (sqlist->leng == sqlist->max_len)

}sqlist->list[sqlist->leng] = newdata;

sqlist->leng++;

return ok;  

}// 列印順序表資料

void display(sqlist *sqlist)

int i;

for (i = 0; i < sqlist->leng; i++)

printf("\n");

}// 在第 pos 個位置前插入乙個資料

int insert_pos(sqlist *s, int pos, elementtype data)

// 判斷順序表有沒有滿

if (s->leng == s->max_len)

}// 將從 pos 位置開始的資料後移一位

int i;

for (i = s->leng-1; i >= pos-1; i--)

// 在pos位置插入新資料

s->list[pos-1] = data;

s->leng++;

return ok;

}// 將第 pos 位置的資料刪除

int delete_pos(sqlist *s, int pos)

// 從pos位置的資料往前移一位

int i;

for (i = pos; i < s->leng; i++)

s->leng--;

return ok;

}// 查詢元素

int search_element(sqlist *s, elementtype data)

int i;

for (i = 0; i < s->leng; i++)

}return ok;

}// 將順序表資料倒置

int inverse_list(sqlist *s)

int front = 0;

int latter = s->leng -1;

int temp;

while (front < latter)

return ok; 

}// 順序表合併

int merge_list(sqlist *s1, sqlist *s2, sqlist *s3)

s3->list = (elementtype*)malloc((s1->leng+s2->leng)*sizeof(elementtype)/sizeof(char));

if (s3->list == null)

s3->leng    = s1->leng + s2->leng; 

s3->max_len = s1->leng + s2->leng;

int i = 0;   // s1

int j = 0;   // s2

int k = 0;   // s3 

while (i < s1->leng && j < s2->leng)

else

}// 判斷s1是否結束

while (i < s1->leng)

// 判斷s2是否結束

while(j < s2->leng)

return ok;

}int main()

int i;

for (i = 0; i < 20; i = i+2)

printf ("s1初始化結果:\n");

display(&s);

/*  // 在第 pos 位置插入乙個資料

if(insert_pos(&s, 5, 11) != ok)

printf ("s1在第5個位置插入11:\n");

display(&s);

// 將第 pos 位置的資料刪除

if (delete_pos(&s, 5) != ok)

printf ("s1將第5個位置資料刪除:\n");

display(&s); */

sqlist s2;

if (init_list(&s2) != ok)

for (i = 1; i < 20; i= i+2)

printf ("s2初始化:\n");

display(&s2);

// 查詢元素

int pos = search_element(&s2, 9);

printf ("pos = %d\n", pos);

// 將順序表資料倒置

if (inverse_list(&s2) != ok)

printf ("s2倒置:\n");

display(&s2);

sqlist s3;

// 將順序表s和s2合併放s3裡

if (merge_list(&s, &s2, &s3) != ok )

printf ("列印s3:\n");

display(&s3);

return 0;

}

實現順序表以及順序表的簡單運算

自定義標頭檔案 my list.h define crt secure no warnings ifndef my list h define my list h 檔案功能 實現線性表的基本運算 1 順序表的插入預算 2 順序表中元素的逆序 3 順序表的刪除運算 define max size 10...

順序表 簡單功能

ifndef seqlist h define seqlist h include include includeusing namespace std define elemtype int define seqlist default size 10 typedef struct seqlist...

順序表簡單操作

include 後插法,此處規定一下 當然也可以前插法 void insert int a,int len,int index,int x for int i len i len index i 在第index的索引後面插入,也就是index 1的索引位置插入 a index 1 x printf ...