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