資料結構 二

2021-09-02 22:00:06 字數 3161 閱讀 2741

順序表

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 個互不相交的非空集合,這些集合中的每乙個都是一棵樹,稱...