標頭檔案:
#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...