C 順序表全功能實現

2021-09-02 05:25:53 字數 4898 閱讀 9812

編譯環境 vs2008

**

#pragma once

#include #include #include #define max_size 100

enum;

typedef int datatype;

typedef struct seqlist

seqlistr;

int i,m,n;

//初始化,銷毀

void seqlistinit(seqlistr *pseq);

void seqlistdestry(seqlistr *pseq);

// 增刪改查

// 尾插,插入在順序表的尾部

void seqlistpushback(seqlistr *pseq ,datatype data);

// 頭插,插入在順序表的頭部 ([0])

void seqlistpushfront(seqlistr *pseq ,datatype data);

// 尾刪,刪除順序表尾部的資料

void seqlistpopback(seqlistr *pseq);

// 頭刪,刪除順序表頭部的資料

void seqlistpopfront(seqlistr *pseq);

//插入元素在某位置

void seqlistinsert(seqlistr *pseq ,int pos,datatype data);

//刪除某位置元素

void seqlisterase(seqlistr* pseq, int pos);

//列印

void seqlistprint(const seqlistr *pseq);

//查詢某元素位置並返回

int seqlistfind(seqlistr* pseq, datatype f_data,int start);

//刪除順序表中所有某元素

void seqlistremove(seqlistr* pseq, datatype r_data);

//修改某下標未知的元素

void seqlistmodify(seqlistr* pseq, int pos, datatype m_data);

//氣泡排序

void seqlistbubblesort(seqlistr* pseq);

//二分查詢

int seqlistbinaryfind(seqlistr* pseq, datatype f_data);

// 本題要求:時間複雜度:o(n) 空間複雜度 o(1)

void seqlistremoveall(seqlistr* pseq, datatype rm_data);

#include "seqlist.h"

// 內部介面宣告

static void checkcapacity(seqlistr *pseq);

// 內部介面

void checkcapacity(seqlistr *pseq)

free(pseq->array);

pseq->array = newarray;

pseq->capacity = newcapacity; }}

void seqlistinit(seqlistr *pseq)

void seqlistdestry(seqlistr *pseq)

// 尾插,插入在順序表的尾部

void seqlistpushback(seqlistr *pseq ,datatype data)

//頭插,插入在順序表的頭部 ([0])

void seqlistpushfront(seqlistr *pseq ,datatype data)

pseq->array[0] = data;

pseq->size++;

}// 尾刪,刪除順序表尾部的資料

void seqlistpopback(seqlistr *pseq)

// 頭刪,刪除順序表頭部的資料

void seqlistpopfront(seqlistr *pseq)

pseq->size--;

}//插入元素在某位置

void seqlistinsert(seqlistr *pseq ,int pos,datatype data)

checkcapacity(pseq);

for (i=pseq->size; i>pos; i--)

pseq->array[pos] = data;

pseq->size++;

}//刪除某位置元素

void seqlisterase(seqlistr* pseq, int pos)

for (i=pos; isize-1; i++)

pseq->size--;

}//刪除順序表中所有某元素

void seqlistremove(seqlistr* pseq, datatype r_data)

printf("本次共刪除了%d個元素!\n",count);

}//查詢某元素位置並返回

int seqlistfind(seqlistr* pseq, datatype f_data,int start)

return -2;

}//修改某下標未知的元素

void seqlistmodify(seqlistr* pseq, int pos, datatype m_data)

pseq->array[pos] = m_data;

}static void swap(datatype *p, datatype *q)

//氣泡排序

void seqlistbubblesort(seqlistr* pseq,int check)

}} }

else if (smallfront == check)

}} }

}//二分查詢(必須在有序且從小到大的排序前提下)

int seqlistbinaryfind(seqlistr* pseq, datatype f_data)

else if(pseq->array[i] < f_data)

else

} return -1;

}//列印

void seqlistprint(const seqlistr *pseq)

printf("\n順序表一共有%d個元素!\n",pseq->size);

}// 本題要求:時間複雜度:o(n) 空間複雜度 o(1)

void seqlistremoveall(seqlistr* pseq, datatype rm_data)

#endif

//方法2

#if 0 //時間複雜度 o(n) 空間複雜度 o(n)

tmparray = (datatype*)malloc(sizeof(datatype)*pseq->size);

assert(tmparray);

m = 0;

for(i=0; isize; i++)

} for(n=0; narray[n] = tmparray[n];

} free(tmparray);

tmparray = null;

pseq->size = m;

#endif

//方法3

//時間複雜度:o(n) 空間複雜度 o(1)

n=0;

for (m=0; msize; m++) }

pseq->size = n;

}

#include "seqlist.h"

int main()

printf("刪除順序表中所有某元素:\n");

seqlistremove(&seqlist,5);

seqlistprint(&seqlist);

printf("修改某下標未知的元素:\n");

seqlistmodify(&seqlist,2,9);

seqlistmodify(&seqlist,1,8);

seqlistmodify(&seqlist,0,7);

seqlistprint(&seqlist);

printf("尾插:\n");

seqlistpushback(&seqlist,1);

seqlistpushback(&seqlist,2);

seqlistpushback(&seqlist,3);

seqlistpushback(&seqlist,4);

seqlistpushback(&seqlist,5);

seqlistpushback(&seqlist,6);

seqlistprint(&seqlist);

printf("氣泡排序:\n");

printf("請選擇: 1.bigfront 2.smallfornt:\n");

scanf("%d",&i);

switch (i)

seqlistprint(&seqlist);

printf("該元素所在的下標為%d\n",seqlistbinaryfind(&seqlist,4));

printf("尾插:\n");

seqlistpushback(&seqlist,1);

seqlistpushback(&seqlist,2);

seqlistpushback(&seqlist,3);

seqlistpushback(&seqlist,4);

seqlistprint(&seqlist);

printf("刪除某元素所有下標的值:\n");

seqlistremoveall(&seqlist,4);

seqlistprint(&seqlist);

return 0;

}

C 實現智慧型提示(提示補全)功能

近段時間在幫朋友做乙個簡訊傳送管理的軟體,其中有乙個常用短語的功能。大家都知道用手機傳送簡訊的時候一般都有常用短語的功能,朋友的意思也是按著手機那樣傳統的形式做就算了。但我覺得其中手機的常用短語功能其實並不常用,因為在手機上這功能比較雞肋。但如果在電腦上,發揮的空間就大了很多,於是我便打算做成像 i...

順序表的功能實現

順序表的建立,插入,刪除,清空,銷毀,查詢,輸出功能 include include include definetrue 1 definefalse 0 defineok 1 defineerror 0 defineinfeasible 1 defineoverflow 2 typedefint ...

動態順序表的功能實現

在了解線性結構後我們知道它可分為順序表和煉表兩種,而順序表又分為靜態順序表 和動態順序表.靜態順序表和靜態通訊錄的實現極為相似,但是我們知道靜態版本有著明顯的缺陷,空間分配太大易造成浪費,太小又不便儲存,而動態版本正好可以解決這個問題。既然前面提到線性結構的組成,那麼我們就在說說鍊錶分為哪些 它可分...