順序表
seq.h檔案
#ifndef _seq_h_
#define _seq_h_
#define ine_size 10
#define add_size 5
typedef enum bool;
typedef int data;
typedef struct _seq
seq;
//建立順序表
seq* create();
//銷毀順序表
void destroy(seq *pb);
//為順序表重新分配空間
bool againmalloc(seq *pb);
//插入資料:尾插
//pb是要插入的順序表
//data是要插入的資料
//返回值:返回成功true,返回失敗flast,其他返回error
bool insert_last(seq *pb,data data);
//插入資料:頭插
//pb是要插入的順序表
//data是要插入的資料
//index是順序表的下標
//返回值:返回成功true,返回失敗flast,其他返回error
bool insert_head(seq *pb, data data);
//插入資料:根據位置插入資料
//pb是要插入的順序表
//data是要插入的資料
//index是順序表的下標
//返回值:返回成功true,返回失敗flast,其他返回error
bool insert_pos(seq *pb, int index,data data);
//刪除資料
//pb是要插入的順序表
//index是順序表的下標
//返回值:返回成功true,返回失敗flast,其他返回error
bool delete(seq *pb, int index);
//刪除某個資料
//pb是要插入的順序表
//data是要刪除的某個的資料
//返回值:返回成功true,返回失敗flast,其他返回error
bool delete_data(seq *pb,data data);
//查詢資料
//[in]pb是要插入的順序表
//[in]data是要查詢的某個的資料
//[out]pindex是傳出的下標
//返回值:返回成功true,返回失敗flast,其他返回error
bool find_data(seq *pb,data data,int *pindex);
//修改資料
//pb是要插入的順序表
//data是要修改的資料
//index是順序表的下標
bool modify_data(seq *pb,data data,int index);
//合併兩張有序表
//s1是第一張表
//s2是第二張表
//返回值:成功則返回第三張表,否則返回失敗
seq *merge_list(seq *pb1,seq *pb2);
//列印函式
void display(seq *pb);
#endif//_seq_h_
seq.c檔案
#include "seq.h"
#include #include seq* create()
pb->pdata=(data *)malloc(sizeof(data)/sizeof(char)*ine_size);
if(null==pb->pdata)
pb->maxsize=ine_size;
pb->size=0;
return pb; }
bool againmalloc(seq *pb)
bool insert_last(seq *pb,data data)
pb->pdata[pb->size++]=data;
return true; }
bool insert_head(seq *pb, data data)
int i;
for(i=pb->size-1;i>=0;i--)
pb->pdata[0]=data;
pb->size++;
return true;
}bool insert_pos(seq *pb, int index,data data)
int i;
for(i=pb->size;i>=index;i--)
pb->pdata[index]=data;
pb->size++;
return true; }
bool delete(seq *pb, int index)
pb->size--;
return true;
}bool delete_data(seq *pb,data data)
} return flast; }
bool find_data(seq *pb,data data,int *pindex)
} return flast;
}bool modify_data(seq *pb,data data,int index)
seq *merge_list(seq *pb1,seq *pb2)
pb3->pdata=(data *)malloc(sizeof(data)/sizeof(char)*(pb1->size+pb2->size));
if(null==pb3->pdata)
pb3->maxsize=pb1->size+pb2->size;
pb3->size=pb1->size+pb2->size;
int i=0;//pb1陣列下標
int j=0;//pb2陣列下標
int k=0;//pb3陣列下標
while(isize&&jsize)
else
}while(isize)
while(jsize)
return pb3;
}void display(seq *pb)
printf("\n");
}void destroy(seq *pb)
資料結構 二
字串處理 strlen 用來計算字元的長度,並不包括結束字元 0 空字元長度為0 1 include 2 3 int strlen char string 4 10 int main 11 strcpy char str1,char str2 用來拷貝字串,把str2每個字元都拷貝到str1中,直到...
資料結構(二)
1.順序表和煉表綜合 在遞增有序的順序表中程式設計實現a a b c typedef intelemtype include sqlist.h 即為資料結構 一 順序表部分 include int main else continue else continue output mylist1 sys...
資料結構 (二)
第四章 樹和二叉樹 1 對於具有層次結構的資料需要用樹形結構來描述。2 樹形結構中乙個結點可以有乙個或多個直接後繼。3 樹是n個結點的有限集合,滿足 當n 0時,稱為空樹 當n 0時,有且僅有乙個稱為根的結點,除根結點外,其餘結點分為m m 0 個互不相交的非空集合,這些集合中的每乙個都是一棵樹,稱...