資料結構 順序表

2021-08-04 22:32:33 字數 3326 閱讀 6233

標頭檔案:

#ifndef __seqlist_h__

#define __seqlist_h__

#define false -1

#define true 0

#define init_size 100

#define incress_size 20

typedef int seqdata;

// 順序表結構

typedef struct _seqlist

seqlist;

// 建立順序表

seqlist *create_list();

// 銷毀順序表

void destroy(seqlist *s);

// 插入資料:尾插法

int insert_last(seqlist *s, seqdata data);

// 插入資料:頭插法

int insert_head(seqlist *s, seqdata data);

// 插入資料:在下標為 pos 的位置插入資料

int insert_pos(seqlist *s, int pos, seqdata data);

int getdata(seqlist *s, int pos, seqdata *x);

// 查詢元素,如果找到,將該元素的下標給x

int finddata(seqlist *s, seqdata data, seqdata *x);

// 刪除 pos 下標的元素

int delete_pos(seqlist *s, int pos);

// 刪除指定資料

int delete_data(seqlist *s, seqdata data);

// 逆序

int reverse_list(seqlist *s);

// 將兩個順序表合併成一張順序表

// 前提:兩張表都是排好序表

// 合併後的表要求是從小到大排列的,函式返回新錶的指標

seqlist * merge_list(seqlist *s1, seqlist *s2);

void display(seqlist *s);

#endif // __seqlist_h__

功能函式:

#include "seqlist.h"

#include

#include

seqlist *create_list()

// 初始化順序的成員

// 為順序表分配儲存空間

s->list = (seqdata *)malloc(sizeof(seqdata)/sizeof(char)*init_size);

if (s->list == null)

s->max_len = init_size;

s->len = 0;

return s;

}void destroy(seqlist *s)

int againmalloc(seqlist *s)

s->list = tmp;

s->max_len += incress_size;

return

true;

}int insert_last(seqlist *s, seqdata data)

// 檢測順序表是否存滿

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

}// 插入資料

s->list[s->len] = data;

s->len++;

return

true;

}int insert_head(seqlist *s, seqdata data)

}// 進行移位

int i;

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

s->list[0] = data;

s->len++;

return

true;

}int insert_pos(seqlist *s, int pos, seqdata data)

}// 進行移位

int i;

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

s->list[pos] = data;

s->len++;

return

true;

}int getdata(seqlist *s, int pos, seqdata *x)

int finddata(seqlist *s, seqdata data, seqdata *x)

}if (flag == 0)

return

false;

return

true;

}int delete_pos(seqlist *s, int pos)

// 移動元素

int i;

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

s->len--;

return

true;

}int delete_data(seqlist *s, seqdata data)

int reverse_list(seqlist *s)

return

true;

}seqlist * merge_list(seqlist *s1, seqlist *s2)

else

}while (i < s1->len)

while (j < s2->len)

return s3;

}void display(seqlist *s)

printf ("\n");

}

main函式:

#include 

#include "seqlist.h"

int main()

seqlist *s2 = create_list();

if (s2 == null)

int i;

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

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

seqlist *s3 = merge_list(s1, s2);

printf ("s1: \n");

display(s1);

printf ("s2: \n");

display(s2);

printf ("s3: \n");

display(s3);

return

0;}

資料結構 順序表

順序表的特徵 1由唯一的表名標識 2佔據一塊連續的儲存空間 3資料順序存放,元素之間有先後關係 定義動態的順序表 define maxsize 100 typedef struct sqlist 這個結構體型別存放的是順序表的資訊和順序表的資料 初始化順序表 void initsqlist sqli...

資料結構 順序表

順序表示最簡單的乙個資料結構,直接貼 吧,因為比較簡單。include include typedef struct sqlist sqlist void initlist sqlist l l length 0 void getelem sqlist l 初始化 l length j printf...

資料結構順序表

include include include include include include include include include include include include include include using namespace std define maxn 100000...