#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 ...