锘??xml version="1.0" encoding="utf-8" standalone="yes"?>
C[i][j]=c[i-1][j-1]+1,xi=yj
C[i][j]=max(C[i][j-1],C[i-1][j]),i,j>0,xi涓嶇瓑浜巠j
瀹炵幇浠g爜濡備笅錛?br />
#include<string.h>
int c[1002][1002]={0};
int main()
{
int N,m,n,i,j;
char x[1002],y[1002];
scanf("%d",&N);
while(N--)
{
scanf("%s",x);
scanf("%s",y);
m=strlen(x);
n=strlen(y);
for(i=1;i<=m;i++)
for(j=1;j<=n;j++)
{
if(x[i-1]==y[j-1])
{
c[i][j]=c[i-1][j-1]+1;
}
else if(c[i-1][j]>=c[i][j-1])
{
c[i][j]=c[i-1][j];
}
else
{
c[i][j]=c[i][j-1];
}
}
printf("%d\n",c[m][n]);
}
return 0;
}
鍙傝冭嚜錛?span style="font-size: 12px;">http://yangchuanhuahpu.blog.163.com/blog/static/18631884020125272205862/
]]>
鑷簳鍚戜笂褰掑茍錛屽鍥炬墍紺猴細(xì)
閫掑綊瀹炵幇浠g爜錛?br />
using namespace std;
void merge(int*arr, int p, int q, int r)
{
int n1 = q - p + 1;
int n2 = r - q;
int* L = new int[n1];
int* R = new int[n2];
for(int i = 0; i < n1; i++)
{
L[i] = arr[p + i];
}
for(int j = 0; j < n2; j++)
{
R[j] = arr[q + j + 1];
}
int i = 0;
int j = 0;
int k = p;
while((i < n1) && (j < n2))
{
if(L[i] <= R[j])
{
arr[k] = L[i];
i++;
}
else
{
arr[k] = R[j];
j++;
}
k++;
}
if (i < n1)
{
for(; i < n1; i++, k++)
{
arr[k] = L[i];
}
}
if (j < n2)
{
for(; j < n2; j++, k++)
{
arr[k] = R[j];
}
}
}
void mergesort(int* arr, int p, int r)
{
int q = 0;
if(p < r)
{
q = (p + r) / 2;
mergesort(arr, p, q);
mergesort(arr, q + 1, r);
merge(arr, p, q, r);
}
}
int main()
{
int a[] = {5, 2, 4, 7, 1, 3, 2, 6};
mergesort(a, 0, 7);
for(int i = 0; i < 8; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
闈為掑綊浠g爜瀹炵幇錛?br />
* merge_sort: 闈為掑綊瀹炵幇 --榪唬
* 闈為掑綊鎬濇兂: 灝嗘暟緇勪腑鐨勭浉閭誨厓绱犱袱涓ら厤瀵廣傜敤merge鍑芥暟灝嗕粬浠帓搴忥紝
* 鏋勬垚n/2緇勯暱搴︿負(fù)2鐨勬帓搴忓ソ鐨勫瓙鏁扮粍孌碉紝鐒跺悗鍐嶅皢浠栦滑鎺掑簭鎴愰暱搴︿負(fù)4鐨勫瓙鏁扮粍孌碉紝
* 濡傛緇х畫(huà)涓嬪幓錛岀洿鑷蟲(chóng)暣涓暟緇勬帓濂藉簭銆?br /> **/
#include <stdio.h>
#include <stdlib.h>
// merge_sort(): 闈為掑綊瀹炵幇-鑷簳鍚戜笂
// 灝嗗師鏁扮粍鍒掑垎涓簂eft[min
max] 鍜?nbsp;right[min
max]涓ら儴鍒?/span>
void merge_sort(int *list, int length)
{
int i, left_min, left_max, right_min, right_max, next;
int *tmp = (int*)malloc(sizeof(int) * length);
if (tmp == NULL)
{
fputs("Error: out of memory\n", stderr);
abort();
}
for (i = 1; i < length; i *= 2) // i涓烘闀匡紝1,2,4,8……
{
for (left_min = 0; left_min < length - i; left_min = right_max)
{
right_min = left_max = left_min + i; //right_min鍙杔eft_max鐨勫鹼紝浠ヤ笅瑕佺敤鍒發(fā)eft_max鐨勫兼墠涓嶄細(xì)鏀瑰彉left_max鍘熷厛鍊?/span>
right_max = left_max + i;
if (right_max > length) //濡傛灉right_max瓚呭嚭浜?jiǎn)鏁熬l勯暱搴︼紝鍒檙ight_max絳変簬鏁扮粍闀垮害
right_max = length;
next = 0;
while (left_min < left_max && right_min < right_max) //tmp[next]瀛樺偍瀛愭暟緇勪腑鐨勬渶灝忓?/span>
tmp[next++] = list[left_min] > list[right_min] ? list[right_min++] : list[left_min++];
while (left_min < left_max) //濡傛灉left_min灝忎簬left_max錛屽垯灝嗘渶灝忓煎師灝佷笉鍔ㄥ湴璧嬬粰list[--right_min]錛宺ight_min 瑕佸厛鍑?
list[--right_min] = list[--left_max];
while (next > 0) //灝唗mp[next]瀛樺偍鐨勬渶灝忓兼斁鍏ist[--right_min]涓?/span>
list[--right_min] = tmp[--next];
}
if(i == 1) //鎵撳嵃絎竴嬈″綊騫跺悗鐨勬暟瀛楁帓鍒?/span>
{
for(int j=0;j<length;j++)
printf("%d ",list[j]);
printf("\n");
}
}
free(tmp);
}
int main()
{
int a[1000],t,i;
scanf("%d",&t);
for(i=0;i<t;i++)
{
scanf("%d",&a[i]);
}
merge_sort(a, t);
// print array
for (i = 0; i < t; i++)
printf("%d ", a[i]);
return 0;
}
]]>
int w[10],p[10];
int knapsack(int m,int n)
{
int i,j,x[10]; //w涓虹墿鍝侀噸閲忥紝p涓轟環(huán)鍊?/span>
for(i=1;i<n+1;i++)
scanf("\n%d%d",&w[i],&p[i]);
for(i=0;i<10;i++)
for(j=0;j<100;j++)
c[i][j]=0;/*鍒濆鍖栨暟緇?/span>*/
for(i=1;i<n+1;i++)
for(j=1;j<m+1;j++)
{
if(w[i]<=j) /*濡傛灉褰撳墠鐗╁搧鐨勯噸閲忓皬浜庤儗鍖呮墍鑳芥壙杞界殑閲嶉噺*/
{
if(p[i]+c[i-1][j-w[i]]>c[i-1][j])
/*濡傛灉鏈墿鍝佺殑浠峰煎姞涓婅儗鍖呭墿涓嬬殑絀洪棿鑳芥斁鐨勭墿鍝佺殑浠峰?/span>*/
/*澶т簬涓婁竴嬈¢夋嫨鐨勬渶浣蟲(chóng)柟妗堝垯鏇存柊c[i][j]*/
c[i][j]=p[i]+c[i-1][j-w[i]];
else
c[i][j]=c[i-1][j];
}
else c[i][j]=c[i-1][j];
}
printf("\n");
int contain = m;
for(int i=n;i>0;--i)
{
if(c[i][contain] == c[i-1][contain])//鏈斁鍏ョi涓墿鍝侊紝contain琛ㄧず褰撳墠鑳屽寘鐨勬壙鍙楅噸閲?/span>
x[i-1] = 0; //鑰冭檻錛歠[i][j] = max{ f[i-1][j] 鍜?nbsp;f[i-1][j - w[i]] + v[i] }, if ( f[i][j] == f[i-1][j] )
else //鍒欒鏄庣墿鍝乮鏈斁鍏ワ紱鍚﹀垯鐗╁搧i 鏀懼叆浜?jiǎn)鑳屽寘涓Q屾渶澶ф壙閲嶉噺涔熺浉搴斿噺鍘粀[i]
{
x[i-1] = 1;
contain -= w[i]; // 鏀句笂浜?jiǎn)绗琲涓墿鍝侊紝褰撳墠鑳屽寘鐨勯噸閲忚鍑忓幓鐩稿簲鐨勭墿鍝乮鐨勯噸閲忥紝鍥炴函
}
}
for(i=0;i<n;i++)
{
printf("%d ",x[i]); //1琛ㄧず鏀懼叆錛?琛ㄧず鏈斁鍏?/span>
}
printf("\n");
return(c[n][m]);
}
int main()
{
int m,n,i,j;
scanf("%d %d",&m,&n);
printf("Input the weight and value:\n");
printf("%d\n",knapsack(m,n));
return 0;
}
//嫻嬭瘯鏁版嵁錛? 4
//2 12
//1 10
//3 20
//2 15
//緇撴灉錛? 1 0 1 鏈澶т環(huán)鍊鹼細(xì)37
]]>
鍒嗘瀽錛?/span>榪欓亾棰樼殑鍏抽敭鍦ㄤ簬錛氳瀹氭暟緇勪綅緗粠1寮濮嬬紪鍙鳳紝閭d箞浣嶇疆涓篿鐨勭粨鐐癸紝瀹冪殑宸﹀瀛愬湪鏁扮粍鐨勪綅緗槸2i錛屽彸瀛╁瓙鍦ㄦ暟緇勭殑浣嶇疆鏄?i+1
浠g爜錛?/span>
using namespace std;
class BiTreeNode
{
private:
BiTreeNode *leftChild; //宸﹀瓙鏍?wèi)鎸囬?/span>
BiTreeNode *rightChild; //鍙沖瓙鏍?wèi)鎸囬?/span>
public:
int data; //鏁版嵁鍩?br />
//鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟
BiTreeNode():leftChild(NULL), rightChild(NULL){}
BiTreeNode(int item, BiTreeNode *left = NULL,
BiTreeNode *right = NULL):
data(item), leftChild(left), rightChild(right){}
~BiTreeNode(){}
BiTreeNode * &Left(void) //娉ㄦ剰榪斿洖鍊肩被鍨嬩負(fù)鎸囬拡鐨勫紩鐢ㄧ被鍨?/span>
{return leftChild;}
BiTreeNode * &Right(void) //娉ㄦ剰榪斿洖鍊肩被鍨嬩負(fù)鎸囬拡鐨勫紩鐢ㄧ被鍨?/span>
{return rightChild;}
};
class BiTree
{
private:
BiTreeNode *root; //鏍圭粨鐐規(guī)寚閽?/span>
int i,len; //len鏄爲(wèi)緇撶偣鐨勬暟閲?/span>
void Destroy(BiTreeNode * &t);
void PreOrder(BiTreeNode * &t);
void CreateBiTree(BiTreeNode * &T,const int arrTree[],int pos);
public:
//鏋勯犲嚱鏁板拰鏋愭瀯鍑芥暟
BiTree(void):root(NULL),i(0){}; //鏋勯犲嚱鏁?/span>
~BiTree(void){}; //鏋愭瀯鍑芥暟
//鏋勯犱簩鍙夋爲(wèi)
void MakeTree(const int arrTree[],int num); //鏋勯犱簩鍙夋爲(wèi)錛屽埄鐢ㄥ厛搴忛亶鍘嗙粨鏋滃緩鏍?/span>
void Destroy(void); //閿姣佷簩鍙夋爲(wèi)
void PreOrder(); //鍓嶅簭閬嶅巻
};
//2銆佸畾涔夐攢姣佸嚱鏁?/span>
void BiTree ::Destroy(void) //閿姣佷簩鍙夋爲(wèi)錛屽叕鏈夊嚱鏁?/span>
{
Destroy(root);
}
void BiTree ::Destroy(BiTreeNode * &t)
//閿姣佷簩鍙夋爲(wèi)錛岀鏈夊嚱鏁頒緵鍏辨湁鍑芥暟璋冪敤
{
if(t != NULL && t->Left() != NULL)
Destroy(t->Left());
if(t != NULL && t->Right() != NULL)
Destroy(t->Right());
if(t != NULL)
{
delete t;
}
}
//3銆佸畾涔夊緩鏍?wèi)鍑芥?/span>
void BiTree::MakeTree(const int arrTree[],int num)
//鏋勯犱簩鍙夋爲(wèi)錛屽埄鐢ㄥ厛搴忛亶鍘嗙粨鏋滃緩鏍?wèi)锛屽叕鏈夊嚱鏁?/span>
{
i=0;
len = num;
CreateBiTree(root,arrTree,1);//鏁扮粍浣嶇疆浠?寮濮?/span>
}
void BiTree::CreateBiTree(BiTreeNode * &T, const int arrTree[],int pos) //閫掑綊寤烘爲(wèi)縐佹湁鍑芥暟
{
int ch;
ch=arrTree[pos];
if (ch == 0 || pos > len) T = NULL;
else
{
T=new BiTreeNode();
T->data = ch; // 鐢熸垚鏍圭粨鐐?/span>
i++;
if(i>len) return;
CreateBiTree(T->Left(), arrTree,2*pos); // 鏋勯犲乏瀛愭爲(wèi)
CreateBiTree(T->Right(), arrTree,2*pos+1); // 鏋勯犲彸瀛愭爲(wèi)
}
}
//4銆佸畾涔夊厛搴忛亶鍘嗗嚱鏁?/span>
void BiTree::PreOrder()
//鍓嶅簭閬嶅巻璁塊棶浜屽弶鏍?wèi)锛屽叕鏈夊嚱鏁?/span>
{
PreOrder(root);
}
void BiTree::PreOrder(BiTreeNode* &t)
//鍓嶅簭閬嶅巻璁塊棶浜屽弶鏍?wèi)锛尶U佹湁鍑芥暟t
{
if(t!=NULL)//鑻ヤ簩鍙夋爲(wèi)緇撶偣涓嶄負(fù)絀猴紝鎵ц濡備笅鎿嶄綔錛?/span>
{
cout<<t->data<<" ";//1銆佽緭鍑哄綋鍓嶇粨鐐圭殑鏁版嵁錛岃〃紺鴻緇撶偣琚闂簡(jiǎn)
PreOrder(t->Left());//2銆佸厛搴忛亶鍘嗚緇撶偣鐨勫乏瀛╁瓙
PreOrder(t->Right());//3銆佸厛搴忛亶鍘嗚緇撶偣鐨勫彸瀛╁瓙
}
}
int main()
{
int m,i,j,k;
int *arrTree;
BiTree myTree;
cin>>m;
for(i=0;i<m;i++)
{
arrTree = new int[800];
cin>>k;
for(j=1;j<=k;j++)
cin>>arrTree[j];
myTree.MakeTree(arrTree,k);
myTree.PreOrder();
cout<<endl;
delete []arrTree;
myTree.Destroy();
}
return 0;
}
]]>
#include<string>
using namespace std;
char a[100];
int i;
int eval()
{
int x=0;
while(a[i] == ' ') i++;
if(a[i] == '+')
{
i++;
return eval()+eval();
}
if(a[i] == '*')
{
i++;
return eval()*eval();
}
while((a[i] >= '0')&&(a[i]<= '9'))
x = 10*x +a[i++]-'0';
return x;
}
int main()
{
gets(a);
cout<< eval()<<endl;
return 0;
}
]]>
using namespace std;
typedef struct{
float coef; //緋繪暟
int expn; //鎸囨暟
}DataType;
struct Node;
typedef struct Node *PNode;
struct Node{
DataType info;
PNode link;
};
typedef struct Node *LinkList;
typedef LinkList polynomial; //甯﹀ご緇撶偣鐨勫崟閾捐〃琛ㄧず澶氶」寮?/span>
int cmp(DataType a,DataType b){
int flag;
if(a.expn<b.expn) flag=-1;
else if(a.expn==b.expn) flag=0;
else flag=1;
return flag;
}
//寤虹珛澶氶」寮忓崟閾捐〃
void CreatPolyn(polynomial &P,int m){ //m涓哄欏瑰紡欏規(guī)暟
polynomial r,s;
P=new struct Node;
r=P;
for(int i=0;i<m;i++){
s=new struct Node;
cout<<"杈撳叆緋繪暟鍜屾寚鏁幫細(xì)";
cin>>s->info.coef>>s->info.expn;
r->link=s;
r=s;
}
r->link=NULL;
}
//澶氶」寮忕浉鍔犲緱鍒版柊鐨勫欏瑰紡
polynomial AddPolyn(polynomial &pa,polynomial &pb){
polynomial newp,p,q,s,r;
float sum;
p=pa->link;
q=pb->link;
newp=new struct Node;
r=newp;
while(p&&q){
switch(cmp(p->info,q->info)){ //姣旇緝涓や釜澶氶」寮忕殑鎸囨暟
case -1: //澶氶」寮弍a褰撳墠緇撶偣鐨勬寚鏁板煎皬
s=new struct Node;
s->info.coef=q->info.coef;
s->info.expn=q->info.expn;
r->link=s;
r=s;
q=q->link;
break;
case 0: //涓や釜澶氶」寮忔寚鏁板肩浉絳?/span>
sum=p->info.coef+q->info.coef;
if (sum!=0.0){
s=new struct Node;
s->info.coef=sum;
s->info.expn=p->info.expn;
r->link=s;
r=s;
}
p=p->link;
q=q->link;
break;
case 1: //澶氶」寮弍b褰撳墠緇撶偣鐨勬寚鏁板煎皬
s=new struct Node;
s->info.coef=p->info.coef;
s->info.expn=p->info.expn;
r->link=s;
r=s;
p=p->link;
break;
}//switch
}//while
//閾炬帴pa鍓╀綑緇撶偣
while(p){
s=new struct Node;
s->info.coef=p->info.coef;
s->info.expn=p->info.expn;
r->link=s;
r=s;
p=p->link;
}
//閾炬帴pb鍓╀綑緇撶偣
while(q){
s=new struct Node;
s->info.coef=q->info.coef;
s->info.expn=q->info.expn;
r->link=s;
r=s;
q=q->link;
}
r->link=NULL;
return newp;
}
//杈撳嚭澶氶」寮忓崟閾捐〃
void PrintPolyn(polynomial p){
polynomial s;
s=p->link;
while(s){
//杈撳嚭緋繪暟鍜屾寚鏁?/span>
cout<<s->info.coef<<"("<<s->info.expn<<")";
s=s->link;
}
cout<<endl;
}
void main(){
int m,n;
polynomial p,q;
cout<<"璇瘋緭鍏ュ欏瑰紡pa鐨勯」鏁幫細(xì)";
cin>>m;
CreatPolyn(p,m);
cout<<"璇瘋緭鍏ュ欏瑰紡pb鐨勯」鏁幫細(xì)";
cin>>n;
CreatPolyn(q,n);
PrintPolyn(p);
PrintPolyn(q);
PrintPolyn(AddPolyn(p,q));
}
]]>
妗屼笂鏈変竴鍙犵墝錛屼粠絎竴寮犵墝寮濮嬩粠涓婂線(xiàn)涓嬩緷嬈$紪鍙?~n銆傚綋鑷沖皯榪樺墿涓ゅ紶鐗屾椂榪涜濡備笅鎿嶄綔錛氭妸絎竴寮犵墝鎵旀帀錛岀劧鍚庢妸鏂扮殑絎竴寮犵墝鏀懼埌鏁村彔鐗岀殑鏈鍚庛傝緭鍏錛岃緭鍑烘瘡嬈℃墧鎺夌殑鐗岋紝浠ュ強(qiáng)鏈鍚庡墿涓嬬殑鐗屻?br />
鏍蜂緥杈撳叆錛?
鏍蜂緥杈撳嚭錛? 3 5 7 4 2 6
浠g爜濡備笅錛?br />
#include<queue>
using namespace std;
queue<int> q; //澹版槑闃熷垪
int main()
{
int n;
cin>>n;
for(int i=0;i<n;i++) q.push(i+1);
while(!q.empty())
{
cout<<q.front()<<" ";
q.pop();
if(!q.empty()) //姝ゅ闇瑕佸垽鏂鏃墮槦鍒楁槸鍚︿負(fù)絀?br /> {
q.push(q.front());
q.pop();
}
}
cout<<endl;
return 0;
}
]]>
#include<stdlib.h>
typedef struct STACKnode* link; //鍫嗘爤鐨勯摼琛ㄥ疄鐜?/span>
struct STACKnode
{
int item;
link next;
};
static link head;
link NEW(int item,link next)
{
link x=(link)malloc(sizeof(STACKnode));
x->item = item; //灝嗘柊寤虹珛鐨勭粨鐐規(guī)坊鍔犲埌閾捐〃澶?/span>
x->next = next; //姝ゆ椂head鎸囧悜鏂板緩绔嬬殑緇撶偣錛屾緇撶偣鐨刵ext緇撶偣錛屽嵆涓哄師鍏堟槸澶寸粨鐐圭殑緇撶偣(鏃уご緇撶偣)
return x; //鍑芥暟榪斿洖鏂板緩绔嬬殑澶寸粨鐐癸紝姝ょ粨鐐規(guī)繪槸浣嶄簬鏍堥《
}
void STACKinit()
{
head = NULL;
}
int STACKempty() //緗┖鏍?/span>
{
return head == NULL;
}
void STACKpush(int item)
{
head = NEW(item,head);
}
int STACKpop()
{
int item = head->item; //灝嗗ご緇撶偣涓婄殑鍊煎彇鍑?/span>
link t = head->next;
free(head); //閲婃斁姝ゅご緇撶偣鍐呭瓨
head = t; //head鎸囧悜鏂扮殑澶寸粨鐐箃
return item; //榪斿洖鏃х殑澶寸粨鐐圭殑鍊?/span>
}
int main()
{
int i;
STACKinit();
for(i=1;i<=10;i++)
STACKpush(i);
for(i=1;i<=10;i++)
printf("%d ",STACKpop());
printf("\n");
return 0;
}
]]>
#include<string.h>
#include<stdlib.h>
#define M 1000
static int N; //N鏍堢殑澶у皬
static int *s;
void STACKinit(int maxN) //寤虹珛涓涓姩鎬佹暟緇剆錛岀浉褰撲簬寤虹珛騫跺垵濮嬪寲鏍?/span>
{
s = (int *)malloc(maxN*sizeof(int));
N=0;
}
int STACKempty()
{
return N==0;
}
void STACKpush(int item)
{
s[N++] = item;
}
int STACKpop()
{
return s[--N];
}
int main() //紼嬪簭浣滅敤錛氬皢涓紑琛ㄨ揪寮忚漿涓哄悗緙琛ㄨ揪寮?/span>
{
char a[M];
gets(a); //杈撳叆涓紑琛ㄨ揪寮?/span>
STACKinit(N);
int i,len=strlen(a);
for(i=0;i<len;i++)
{
if(a[i] == ')')
printf("%c ",STACKpop()); //閬囧埌鍙蟲(chóng)嫭鍙峰脊鍑烘爤欏剁殑榪愮畻絎?/span>
if((a[i] == '+') || (a[i] == '*'))
STACKpush(a[i]); //灝嗚繍綆楃鍘嬪叆鏍?/span>
if((a[i] == '-') || (a[i] =='/'))
STACKpush(a[i]);
if((a[i] >= '0') && (a[i] <= '9')) //閬囧埌鏁板瓧鍒欒緭鍑?/span>
printf("%c ",a[i]);
}
return 0;
}
紺轟緥錛?br />![]()
]]>
#include<string.h>
#include<stdlib.h>
#define M 1000
static int N; //N鏍堢殑澶у皬
static int *s;
void STACKinit(int maxN) //寤虹珛涓涓姩鎬佹暟緇剆錛岀浉褰撲簬寤虹珛騫跺垵濮嬪寲鏍?/span>
{
s = (int *)malloc(maxN*sizeof(int));
N=0;
}
int STACKempty()
{
return N==0;
}
void STACKpush(int item)
{
s[N++] = item;
}
int STACKpop()
{
return s[--N];
}
int main()
{
char a[M];
gets(a); //杈撳叆鍚庣紑琛ㄨ揪寮忥紝姣忎釜鏁存暟涔嬪悗鑷沖皯瑕佹湁涓涓┖鏍?/span>
int i,len,ok;
char k[15]={' ','0','1','2','3','4','5','6','7','8','9','+','-','/','*'};
len=strlen(a);
while(1) //媯(gè)鏌ヨ緭鍏ュ瓧絎︿覆鐨勫悎娉曟э紙浠呴檺浜庢鏌ヨ緭鍏ユ槸鍚︿負(fù)鍖呭惈鏁板瓧鍜? - * / 鍜?nbsp;' '鐨勫瓧絎︿覆錛?/span>
{
ok=0;
for(i=0;i<len;i++)
{
for(int j=0;j<15;j++)
{
if(a[i] == k[j])
{
ok=1;
}
}
if(!ok)
{
printf("Input error! please input again:\n");
break;
}
}
if(!ok)
{
gets(a);
len=strlen(a);
}
else
break;
}
STACKinit(len); //鍒濆鍖朜=0
for(i=0;i<len;i++)
{
if(a[i] == '+')
STACKpush(STACKpop()+STACKpop());
if(a[i] == '*')
STACKpush(STACKpop()*STACKpop());
if(a[i] == '-')
{
b = STACKpop();
c = STACKpop();
STACKpush(c-b);
}
if(a[i] == '/')
{
b = STACKpop();
c = STACKpop();
STACKpush(c/b);
}
if((a[i] >= '0') && (a[i] <= '9')) //濡傛灉閬囧埌鏁板瓧錛屽垯鍏堝帇鍏?榪涙爤
STACKpush(0);
while((a[i] >='0') && (a[i] <='9'))
STACKpush(10*STACKpop()+(a[i++]-'0'));//鍐嶅皢“瀛楃鏁板瓧”杞崲涓烘暟瀛?/span>
}
printf("%d \n",STACKpop());
return 0;
}
紺轟緥錛?br />
]]>
int search(int a[],int v,int l,int r) //鍦ㄦ暟緇刟[]鍐呮煡鎵緑錛宭涓哄乏涓嬫爣錛宺涓哄彸涓嬫爣
{
while (r>=l)
{
int m=(l+r)/2; //姣忔鍙栨暟緇勭殑涓鍗?姝ゅ瑕佸姞1
if(v == a[m]) //濡傛灉鏌ユ壘鍒皏錛屽垯榪斿洖涓嬫爣m
return m;
if(v < a[m]) //濡傛灉v灝忎簬姝ゆ椂鐨勬暟錛屽垯鍙充笅鏍囧彉鎴恟=m-1錛屽幓鎺夋暟緇勪腑涓鍗婄殑鏁幫紝鍙嶄箣浜︾劧
r=m-1;
else
l=m+1;
}
return -1;
}
]]>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem; //瀛樺偍絀洪棿鍩哄潃
int length; //褰撳墠鐨勭嚎鎬ц〃闀垮害
int listsize; //褰撳墠鍒嗛厤鐨勫瓨鍌ㄥ閲?/span>
}SqList;
//鍒濆鍖栫嚎鎬ц〃
Status InitList_Sq(SqList *L) //鐢ㄧ嚎鎬ц〃鐨勬寚閽堟搷浣?/span>
{
(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*L).elem) exit(OVERFLOW);
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
}
int ListLength(SqList L)
{
return L.length;
}
Status GetElem(SqList L,int i,ElemType *e)
{
if(i<1 || i>L.length)
exit(ERROR);
*e=*(L.elem+i-1);
return OK;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
ElemType *newbase,*p,*q;
if(i<1 || i>(*L).length+1)
return ERROR;
if((*L).length >= (*L).listsize)
{
newbase=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
(*L).elem=newbase;
(*L).listsize +=LISTINCREMENT;
}
q=(*L).elem+i-1; //鎻掑叆浣嶇疆
for(p=(*L).elem+(*L).length-1;p>=q;--p)
*(p+1)=*p;
*q=e;
++(*L).length;
return OK;
}
int LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
{
if(*(L.elem+i) == e)
break;
}
if(i>=L.length)
return 0;
return i+1;
}
Status Visit(ElemType *c)
{
printf("%d ",*c);
return OK;
}
Status ListTraverse(SqList L)
{
int i;
for(i=0;i<L.length;i++)
Visit(L.elem+i);
printf("\n");
return OK;
}
void Union(SqList *La,SqList Lb) //姹侺a鍜孡b涓厓绱犵殑闆嗗悎La錛屽嵆鎶奓b涓笌La涓嶇浉鍚岀殑鍏冪礌鍙栧嚭鏉ユ彃鍏a涓?/span>
{
ElemType La_len,Lb_len;
int i,e;
La_len=ListLength(*La);
Lb_len=ListLength(Lb);
for(i=1;i<=Lb_len;i++)
{
GetElem(Lb,i,&e);
if(!LocateElem(*La,e))
ListInsert(La,++La_len,e);
}
}//Union
int main()
{
SqList La,Lb;
int j,a[4]={3,5,8,11},b[7]={2,6,8,9,11,15,20};
InitList_Sq(&La);
for(j=1;j<=4;j++)
ListInsert(&La,j,a[j-1]);
printf("print La: \n");
ListTraverse(La);
InitList_Sq(&Lb);
for(j=1;j<=7;j++)
ListInsert(&Lb,j,b[j-1]);
printf("print Lb: \n");
ListTraverse(Lb);
Union(&La,Lb);
printf("print La: \n");
ListTraverse(La);
return 0;
}
]]>
#include<stdlib.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem; //瀛樺偍絀洪棿鍩哄潃
int length; //褰撳墠鐨勭嚎鎬ц〃闀垮害
int listsize; //褰撳墠鍒嗛厤鐨勫瓨鍌ㄥ閲?/span>
}SqList;
//鍒濆鍖栫嚎鎬ц〃
Status InitList_Sq(SqList *L) //鐢ㄧ嚎鎬ц〃鐨勬寚閽堟搷浣?/span>
{
(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*L).elem) exit(OVERFLOW);
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
}
int ListLength(SqList L)
{
return L.length;
}
Status GetElem(SqList L,int i,ElemType *e)
{
if(i<1 || i>L.length)
exit(ERROR);
*e=*(L.elem+i-1);
return OK;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
ElemType *newbase,*p,*q;
if(i<1 || i>(*L).length+1)
return ERROR;
if((*L).length >= (*L).listsize)
{
newbase=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
(*L).elem=newbase;
(*L).listsize +=LISTINCREMENT;
}
q=(*L).elem+i-1; //鎻掑叆浣嶇疆
for(p=(*L).elem+(*L).length-1;p>=q;--p)
*(p+1)=*p;
*q=e;
++(*L).length;
return OK;
}
Status Visit(ElemType *c)
{
printf("%d ",*c);
return OK;
}
Status ListTraverse(SqList L)
{
int i;
for(i=0;i<L.length;i++)
Visit(L.elem+i);
printf("\n");
return OK;
}
void MergeList(SqList La,SqList Lb,SqList *Lc) //褰掑茍綰挎ц〃La鍜孡b寰楀埌鏂扮殑綰挎ц〃Lc,Lc鐨勬暟鎹厓绱犲畨緗掑噺鎺掑垪
{
int i=1,j=1,k=0;
int La_len,Lb_len;
ElemType ai,bj;
InitList_Sq(Lc);
La_len=ListLength(La);
Lb_len=ListLength(Lb);
while((i<=La_len) && (j<=Lb_len)) //濡傛灉琛↙a鍜岃〃Lb閮介潪絀?/span>
{
GetElem(La,i,&ai);
GetElem(Lb,j,&bj);
if(ai<=bj)
{
ListInsert(Lc,++k,ai); ++i;
}
else
{
ListInsert(Lc,++k,bj); ++j;
}
}
while(i<=La_len) //濡傛灉鍙湁La闈炵┖
{
GetElem(La,i++,&ai);
ListInsert(Lc,++k,ai);
}
while(j<=Lb_len)
{
GetElem(Lb,j++,&bj);
ListInsert(Lc,++k,bj);
}
}
int main()
{
SqList La,Lb,Lc;
int j,a[4]={3,5,8,11},b[7]={2,6,8,9,11,15,20};
InitList_Sq(&La);
for(j=1;j<=4;j++)
ListInsert(&La,j,a[j-1]);
printf("print La: \n");
ListTraverse(La);
InitList_Sq(&Lb);
for(j=1;j<=7;j++)
ListInsert(&Lb,j,b[j-1]);
printf("print Lb: \n");
ListTraverse(Lb);
MergeList(La,Lb,&Lc);
printf("print Lc: \n");
ListTraverse(Lc);
return 0;
}
]]>
#include<stdlib.h>
#include<malloc.h>
#define LIST_INIT_SIZE 100
#define LISTINCREMENT 10
#define OK 1
#define ERROR 0
#define OVERFLOW -1
typedef int ElemType;
typedef int Status;
typedef struct {
ElemType *elem; //瀛樺偍絀洪棿鍩哄潃
int length; //褰撳墠鐨勭嚎鎬ц〃闀垮害
int listsize; //褰撳墠鍒嗛厤鐨勫瓨鍌ㄥ閲?/span>
}SqList;
//鍒濆鍖栫嚎鎬ц〃
Status InitList_Sq(SqList *L) //鐢ㄧ嚎鎬ц〃鐨勬寚閽堟搷浣?/span>
{
(*L).elem = (ElemType *)malloc(LIST_INIT_SIZE*sizeof(ElemType));
if(!(*L).elem) exit(OVERFLOW);
(*L).length=0;
(*L).listsize=LIST_INIT_SIZE;
return OK;
}
int ListLength(SqList L)
{
return L.length;
}
Status ListEmpty(SqList L)
{
if(L.length == 0)
return OK;
else
return ERROR;
}
Status ClearList(SqList *L)
{
(*L).length=0;
return OK;
}
Status DestroyList(SqList *L)
{
free((*L).elem);
(*L).elem=NULL;
(*L).length=0;
(*L).listsize=0;
return OK;
}
Status GetElem(SqList L,int i,ElemType *e)
{
if(i<1 || i>L.length)
exit(ERROR);
*e=*(L.elem+i-1);
return OK;
}
Status ListInsert(SqList *L,int i,ElemType e)
{
ElemType *newbase,*p,*q;
if(i<1 || i>(*L).length+1)
return ERROR;
if((*L).length >= (*L).listsize)
{
newbase=(ElemType *)realloc((*L).elem,((*L).listsize+LISTINCREMENT)*sizeof(ElemType));
if(!newbase) exit(OVERFLOW);
(*L).elem=newbase;
(*L).listsize +=LISTINCREMENT;
}
q=(*L).elem+i-1; //鎻掑叆浣嶇疆
for(p=(*L).elem+(*L).length-1;p>=q;--p)
*(p+1)=*p;
*q=e;
++(*L).length;
return OK;
}
Status Visit(ElemType *c)
{
printf("%d ",*c);
return OK;
}
Status ListTraverse(SqList L)
{
int i;
for(i=0;i<L.length;i++)
Visit(L.elem+i);
printf("\n");
return OK;
}
int LocateElem(SqList L,ElemType e)
{
int i;
for(i=0;i<L.length;i++)
{
if(*(L.elem+i) == e)
break;
}
if(i>=L.length)
return 0;
return i+1;
}
Status ListDelete(SqList *L,int i,ElemType *e)
{
int k;
if(L->length == 0)
return ERROR;
if(i<1 || i>=L->length)
return ERROR;
*e=*(L->elem+i-1);
if(i<L->length)
{
for(k=i;k<L->length;k++)
*(L->elem+k-1)=*(L->elem+k);
}
L->length--;
return OK;
}
int main()
{
int i,e;
SqList mylist;
int m = InitList_Sq(&mylist);
if(m)
{
printf("綰挎ц〃鍒涘緩鎴愬姛!\n");
printf("褰撳墠琛ㄩ暱: %d \n",ListLength(mylist));
}
else
printf("綰挎ц〃鍒涘緩澶辮觸.");
for(i=1;i<=10;i++)
ListInsert(&mylist,i,i);
ListTraverse(mylist);
printf("褰撳墠琛ㄩ暱錛?d \n",ListLength(mylist));
GetElem(mylist,5,&e);
printf("絎?涓厓绱犱負(fù)錛?d\n",e);
ListDelete(&mylist,4,&e);
printf("鍒犻櫎絎?涓厓绱犲悗錛?);
ListTraverse(mylist);
printf("褰撳墠琛ㄩ暱錛?d \n",ListLength(mylist));
i=ClearList(&mylist);
printf("娓呯┖綰挎ц〃鍚庯細(xì)琛ㄩ暱涓?nbsp;%d\n",mylist.length);
i=ListEmpty(mylist);
printf("琛ㄦ槸鍚︿負(fù)絀猴細(xì)%d (1:絀?nbsp;0錛氬惁)\n",i);
return 0;
}
]]>
#include<stdlib.h>
typedef struct node *link;
struct node
{ int v; link next; };
link NEW(int v, link next)
{
link x = (link)malloc(sizeof(node));
x->v = v; x->next = next;
return x;
}
int main()
{
int i,j;
link adj[7];
for(i=0;i<7;i++)
adj[i] = NULL;
while (scanf("%d%d",&i,&j) == 2)
{
adj[j] = NEW(i,adj[j]);
adj[i] = NEW(j,adj[i]);
}
return 0;
}
]]>
#include<stdlib.h>
int main()
{
int i,j,adj[7][7];
for(i=0;i<7;i++)
for(j=0;j<7;j++)
adj[i][j] = 0;
for(i=0;i<7;i++)
adj[i][i] = 1;
while(scanf("%d%d",&i,&j) == 2)
{
adj[i][j] = 1;
adj[j][i] = 1;
}
for(i=0;i<7;i++)
{
for(j=0;j<7;j++)
{
printf("%d ",adj[i][j]);
}
printf("\n");
}
return 0;
}
緇撴灉鎴浘錛?br />
]]>
浠g爜濡備笅錛?br />
#define N 10
int Maxcom(int a, int b)
{
while(a!=b)
{
if(a>b)
a=a-b;
else if(b>a)
b=b-a;
}
return a;
}
int main()
{
int a[N][N];
int i,j,max;
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
{
if(i==1 && j==1)
a[i][j]=1;
else if( i>0 && j>0)
{
max = Maxcom(i,j);
if(max == 1)
a[i][j]=1;
else
a[i][j]=0;
}
else
a[i][j]=0;
}
}
for(i=0;i<5;i++)
{
for(j=0;j<5;j++)
printf("%d ",a[i][j]);
printf("\n");
}
printf("\n");
return 0;
}
]]>
瀹炵幇浠g爜濡備笅錛?br />
#include<stdlib.h>
typedef struct node *link;
struct node{ int item; link next; };
int node_number(link p,int n)
{
int count=0,i;
for(i=0;i<n-1;i++)
{
p=p->next;
}
while(p->item)
{
p->item=0;
p=p->next;
count++;
}
return count;
}
int main()
{
int i,N;
link t=(link)malloc(sizeof(node));
t->item=1;
t->next=t;
link x=t;
for(i=2;i<=10;i++)
{
x = (x->next= (link)malloc(sizeof(node)));
x->item=i;
x->next=t;
}
printf("Please input the order of node: ");
scanf("%d",&N);
printf("total number of nodes is: %d\n",node_number(t,N));
return 0;
}
]]>
榪欎釜闂縐頒負(fù)綰︾憻澶棶棰橈紝鍙互鍒╃敤閾捐〃瑙e喅銆?br />
浠g爜濡備笅錛?br />
#include<stdio.h>
#include<stdlib.h>
typedef struct node *link;
struct node { int item; link next; }; //瀹氫箟緇撶偣
int main()
{
int i,N,M;
printf("Input N and M: "); //N琛ㄧず鍏辨湁N涓漢錛孧琛ㄧず姣忛殧絎琈涓漢瑕佸嚭灞
scanf("%d%d",&N,&M);
link t = (link)malloc(sizeof(node)); //鏂板緩緇撶偣t
link x=t;
t->item = 1; t->next=t; //鍒涘緩涓涓唬琛?鍙風(fēng)殑鍗曚釜鑺傜偣鐨勫驚鐜摼琛?/span>
for(i=2;i<=N;i++)
{
x=(x->next= (link)malloc(sizeof(node)));//灝?~N鍙鋒寜搴忔彃鍒頒箣鍓嶅垱寤虹殑鍗曚釜鑺傜偣鐨勫驚鐜摼琛ㄤ腑
x->item=i; x->next=t;
}
while(x!= x->next) //濡傛灉涓嶆槸鏈鍚庝竴涓妭鐐癸紝鍥犱負(fù)鏄驚鐜摼琛紝鎵浠!=x->next
{
for(i=1;i<M;i++) //鍒欓『鐫閾捐〃鍚戝墠閬嶅巻錛屾暟鍑篗-1涓厓绱?/span>
x=x->next;
printf("%d ",x->next->item);
x->next = x->next->next; //鍒犻櫎絎琈涓厓绱?/span>
N--; //鑺傜偣鏁板噺1
}
printf("\n%d\n",x->item); //鏈鍚庢墦鍗板嚭鏈鍚庝竴涓妭鐐?/span>
return 0;
}
]]>
紼嬪簭濡備笅錛?br />
float distance(point,point); //涓ょ偣涔嬮棿璺濈鍑芥暟
float distance(point a,point b)
{
float dx= a.x - b.x, dy= a.y - b.y;
return sqrt(dx*dx + dy*dy);
}
//浠ヤ笂涓哄ご鏂囦歡 Point.h 鐨勫唴瀹?/span>
#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include "Point.h"
float randFloat()
{ return 1.0*rand()/RAND_MAX; } //浜х敓闅忔満鏁扮殑鍑芥暟
int main()
{
float d,N;
int i,j,cnt=0;
scanf("%f%f",&d,&N); //d涓鴻姹備袱鐐逛箣闂磋窛紱誨皬浜庣殑闀垮害錛孨涓烘祴璇曠殑鐐?nbsp;
point *a = (point *)malloc(sizeof(point)*N); //鍔ㄦ佺敓鎴愭暟鎹被鍨嬩負(fù)point鐨勬暟緇刟
for(j=i+1;j<N;j++)
if(distance(a[i],a[j])<d) //濡傛灉涓ょ偣涔嬮棿鐨勮窛紱誨皬浜巇錛岄偅涔坈nt鍔?
cnt++;
printf("%d edges shorter than %f\n",cnt,d); //杈撳嚭鏈夊灝戞潯杈圭殑闀垮害灝忎簬d
return 0;
}
]]>
紼嬪簭浠g爜錛?br />
#define N 10000
#include<stdio.h>
int main()
{
int i,j,a[N];
for(i=2;i<N;i++) a[i]=1; //灝嗘暟緇勪腑鐨勫煎叏閮ㄨ涓?
for(i=2;i<N;i++)
if(a[i])
for(j=i;i*j<N;j++) a[i*j]=0; //灝嗙儲(chǔ)寮曚負(fù)2,3,5錛?img src="http://m.shnenglu.com/Images/dot.gif" alt="" />鐨勫嶆暟鐨勬暟緇勫厓绱犺涓?錛屽洜涓鴻繖浜涙暟涓嶆槸绱犳暟
for(i=2;i<N;i++)
if(a[i]) printf("4%d\n",i); //閬嶅巻鎵撳嵃鍑烘壘鍒扮殑绱犳暟
printf("\n");
return 0;
}
]]>
#include<stdlib.h>
struct Stu
{
int score;
struct Stu *next;
};
typedef struct Stu Node;
int main()
{
int i;
Node *head,*p,*q;
head=(Node*)malloc(sizeof(Node)); //鍒涘緩澶寸粨鐐?/span>
if(head == NULL)
{
printf("Memory is not enough!");
return 0;
}
head->next=NULL;
for(i=0;i<10;i++)
{
p=(Node*)malloc(sizeof(Node)); //鍒涘緩涓涓柊緇撶偣p
if(p == NULL)
{
printf("no enough memory!");
return 0;
}
printf("Input the %dth student's score: ",i+1);
scanf("%d",&p->score); //杈撳叆鎴愮嘩
q=head;
while(q->next != NULL) //閬嶅巻閾捐〃
{
if(q->next->score < p->score) //濡傛灉鍙戠幇閾捐〃涓殑鏌愪釜鎴愮嘩姣斿綋鍓嶈緭鍏ユ垚緇╁皬錛屽氨璺沖嚭寰幆錛屽湪鍏跺墠闈㈡彃鍏ュ綋鍓嶈緭鍏ユ垚緇?/span>
break;
q=q->next; //緇х畫(huà)閬嶅巻鐩村埌閬嶅巻鐨勬垚緇╂瘮褰撳墠杈撳叆鐨勬垚緇╁皬
}
p->next=q->next; //榪欐槸褰撳墠鎴愮嘩鎻掑叆鍒伴摼琛ㄤ腑姣斿叾灝忕殑鎴愮嘩鍓嶉潰鐨勪唬鐮?/span>
q->next=p;
}
p=head->next;
while(p !=NULL)
{
printf("%d ",p->score);
p=p->next;
}
while(p->next !=NULL)
{
q=p->next;
p->next=q->next;
free(q);
}
free(head);
return 0;
}
]]>
#include<stdio.h>
#include<stdlib.h>
struct student
{
int number;
float score;
struct student *next;
};
int main()
{
int n=0;
struct student *head,*p1;
p1=(struct student*)malloc(sizeof(struct student));
scanf("%d %f",&p1->number,&p1->score);
head=p1;
head->next=NULL;
while(p1->number!=0 && p1->score!=0)
{
n++;
p1->next=(struct student*)malloc(sizeof(struct student));
p1=p1->next;
p1->next=NULL;
scanf("%d %f",&p1->number,&p1->score);
}
struct student *p3,*p4;
p3=(struct student*)malloc(sizeof(struct student));
p4=(struct student*)malloc(sizeof(struct student));
for(int i=0;i<n;i++)
{
p3=head;
for(int j=0;j<n-i-1;j++)
{
p4=p3->next;
if(p3->number>p4->number)
{
int k=p3->number;
p3->number=p4->number;
p4->number=k;
float m=p3->score;
p3->score=p4->score;
p4->score=m;
}
p3=p3->next;
}
}
printf("The list is:\n");
p3=head;
do
{
if(p3->number ==0 && p3->score==0)
continue;
printf("%d %.0f\n",p3->number,p3->score);
p3=p3->next;
}while(p3!=NULL);
free(p1);
free(p3);
free(p4);
return 0;
}
]]>
void swap(int *a,int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
void quicksort(int k[],int s,int t)
{
int i,j;
if(s<t)
{
i=s;
j=t+1;
while(1)
{
do i++;
while(!(k[s]>=k[i] || i==t));//閲嶅鎵цi++鎿嶄綔
do j--;
while(!(k[s]<=k[j] || j==s));//閲嶅鎵цj--鎿嶄綔
if(i<j)
swap(&k[i],&k[j]); //浜ゆ崲k[i]鍜宬[j]鐨勪綅緗?/span>
else
break;
}
swap(&k[s],&k[j]); //浜ゆ崲鍩哄噯鍏冪礌涓巏[j]鐨勪綅緗?/span>
quicksort(k,s,j-1); //閫掑綊鎺掑簭鍩哄噯鍏冪礌鍓嶉潰鐨勫瓙搴忓垪
quicksort(k,j+1,t); //閫掑綊鎺掑簭鍩哄噯鍏冪礌鍚庨潰鐨勫瓙搴忓垪
}
}
int main()
{
int k[10]={2,5,6,3,7,8,0,9,12,1},i;
printf("The orginal data array is\n");
for(i=0;i<10;i++)
printf("%d ",k[i]);
quicksort(k,0,9); //浠庡ぇ鍒板皬鎺掑簭
printf("\nThe result of quick sorting for the array is\n");
for(i=0;i<10;i++)
printf("%d ",k[i]);
return 0;
}
]]>
#include<stdio.h>
void shellsort(int k[],int n)
{
int i,j,flag,gap=n;
int tmp;
while(gap>1)
{
gap=gap/2;
do{
flag=0;
for(i=1;i<=n-gap;i++)
{
j=i+gap;
if(k[i]<k[j])
{
tmp=k[i];
k[i]=k[j];
k[j]=tmp;
flag=1;
}
}
}while(flag!=0);
}
}
int main()
{
int i,a[11]={-111,2,5,6,3,7,8,0,9,12,1};
printf("The orginal data array is\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
shellsort(a,10);
printf("\nThe result of Shell's sorting for the array is\n");//浠庡ぇ鍒板皬鎺掑簭
for(i=1;i<=10;i++)
printf("%d ",a[i]);
return 0;
}
]]>
int insertsort(int a[],int n)//鐩存帴鎺掑簭娉?/span>
{
int i,j;
for(i=2;i<=n;i++)
{
a[0]=a[i]; //a[0]浣滀負(fù)涓存椂鍙橀噺瀛樺偍a[i]
j=i-1;
while(j>0 && a[0]>a[j])//浠庡ぇ鍒板皬鎺掑垪
a[j+1]=a[j--];
a[j+1]=a[0]; //灝嗗厓绱燼[0]鎻掑叆鎸囧畾浣嶇疆
}
return 0;
}
int main()
{
int i,a[11]={-111,2,5,6,3,7,8,0,9,12,1};//a[0]娌℃湁浣跨敤
printf("The orginal data array is\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
insertsort(a,10);
printf("\nThe result of insertion sorting for the array is\n");
for(i=1;i<=10;i++)
printf("%d ",a[i]);
printf("\n");
return 0;
}
]]>
#include<stdlib.h>
#include<conio.h>
typedef struct BiTNode
{
char data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
CreatBiTree(BiTree *T)
{
char c;
scanf("%c",&c);
if(c == ' ') *T=NULL; //濡傛灉杈撳嚭鐨勬槸絀烘牸錛屽垯琛ㄧず鍒涘緩鐨勫瓙鏍?wèi)缁撴?/span>
else
{
*T=(BiTNode*)malloc(sizeof(BiTNode)); //鍒涘緩鏍圭粨鐐?/span>
(*T)->data=c; //鍚戞牴緇撶偣涓緭鍏ユ暟鎹?/span>
CreatBiTree(&((*T)->lchild)); //閫掑綊鍦板垱寤哄乏瀛愭爲(wèi)
CreatBiTree(&((*T)->rchild)); //閫掑綊鍦板垱寤哄彸瀛愭爲(wèi)
}
}
//璁塊棶浜屽弶鏍?wèi)缁撶偣锛岃緭鍑哄寘鍚獶瀛楃緇撶偣浣嶄簬浜屽弶鏍?wèi)涓殑灞傛?/span>
visit(char c,int level)
{
if(c=='D')
printf("%c is at %d lever of BiTree\n",c,level);
}
PreOrderTraverse(BiTree T,int level)
{
if(T) //閫掑綊緇撴潫鏉′歡錛孴涓虹┖
{
visit(T->data,level);//璁塊棶鏍圭粨鐐?/span>
PreOrderTraverse(T->lchild,level+1);
PreOrderTraverse(T->rchild,level+1);
}
}
int main()
{
int level=1;
BiTree T=NULL; //鏈寮濮婽鎸囧悜絀?/span>
CreatBiTree(&T);
PreOrderTraverse(T,level);
getche();
return 0;
}
]]>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
typedef char ElemType;
typedef struct QNode
{
ElemType data;
struct QNode *next;
}QNode,*QueuePtr;
typedef struct{
QueuePtr front; //闃熷ご鎸囬拡
QueuePtr rear; //闃熷熬鎸囬拡
}LinkQueue;
initQueue(LinkQueue *q) //鍒涘緩涓涓ご緇撶偣錛岄槦澶撮槦灝炬寚閽堟寚鍚戣緇撶偣
{
q->front=q->rear=(QueuePtr)malloc(sizeof(QNode));
if(!q->front) exit(0);
q->front->next=NULL;
}
EnQueue(LinkQueue *q,ElemType e)
{
QueuePtr p;
p=(QueuePtr)malloc(sizeof(QNode));
if(!q->front) exit(0);
p->data=e; //鏁版嵁e鍏ュ垪
p->next=NULL;
q->rear->next=p;
q->rear=p;
}
DeQueue(LinkQueue *q,ElemType *e)//濡傛灉闃熷垪q涓嶄負(fù)絀猴紝鍒犻櫎q鐨勯槦澶村厓绱狅紝鐢╡榪斿洖鍏跺?/span>
{
QueuePtr p;
if(q->front==q->rear) return; //闃熷垪涓虹┖錛岃繑鍥?/span>
p=q->front->next;
*e=p->data;
q->front->next=p->next;
if(q->rear==p) q->rear=q->front;//濡傛灉闃熷ご灝辨槸闃熷熬錛屽垯淇敼闃熷熬鎸囬拡
free(p);
}
int main()
{
ElemType e;
LinkQueue q;
initQueue(&q);
printf("Please input a string into a queue\n");
scanf("%c",&e);
while(e!='@')
{
EnQueue(&q,e);
scanf("%c",&e);
}
printf("The string into the queue is\n");
while(q.front!=q.rear)
{
DeQueue(&q,&e);
printf("%c",e);
}
printf("\n");
getche();
return 0;
}
]]>
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<conio.h>
#define STACK_INIT_SIZE 20
#define STACKINCREMENT 10
typedef char ElemType;
typedef struct{
ElemType *base;
ElemType *top;
int stacksize;
}sqStack;
initStack(sqStack *s) //鍒涘緩涓涓爤
{
s->base=(ElemType*)malloc(STACK_INIT_SIZE*sizeof(ElemType));
if(!s->base) exit(0);
s->top=s->base;
s->stacksize=STACK_INIT_SIZE;
}
Push(sqStack *s,ElemType e){
if(s->top-s->base>=s->stacksize){
s->base=(ElemType*)realloc(s->base,(s->stacksize+STACKINCREMENT)*sizeof(ElemType));
if(!s->base) exit(0);
s->top=s->base+s->stacksize;
s->stacksize=s->stacksize+STACKINCREMENT;
}
*(s->top)=e;
s->top++;
}
Pop(sqStack *s,ElemType *e){
if(s->top==s->base) return;
*e=*--(s->top);
}
int StackLen(sqStack s){ //璁$畻鏍堢殑褰撳墠瀹歸噺
return (s.top-s.base);
}
int main()
{
ElemType c;
sqStack s; //鏍?/span>
int len,i,sum=0;
printf("Please input a Binary digit\n");
initStack(&s);
//杈撳叆0/1瀛楃琛ㄧず鐨勪簩榪涘埗鏁幫紝浠?緇撴潫
scanf("%c",&c);
while(c!='#')
{
Push(&s,c);
scanf("%c",&c);
}
getchar();
len=StackLen(s);
for(i=0;i<len;i++)
{
Pop(&s,&c);
sum=sum+(c-48)*pow(2,i);//c-48鏄負(fù)浜?jiǎn)寰楀埌璇ュ瓧绗﹀搴旂?/1鍊鹼紝榪欐槸鍥犱負(fù)瀛楃0鐨凙SCII鐮佷負(fù)48
}
printf("Decimal is %d\n",sum);
getche();
return 0;
}
ClearStack(sqStack *s)
{
s->top=s->base;
}
//閿姣佷竴涓爤 浠g爜
DestroyStack(sqStack *s)
{
int i,len;
len=s->stacksize;
for(i=0;i<len;i++)
{
free(s->base);
s->base++;
}
s->base=s->top=NULL;
s->stacksize=0;
}
]]>
#include<stdlib.h>
#include<conio.h>
typedef int ElemType;
typedef struct node{
ElemType data;
struct node *next;
}LNode,*LinkList;
LinkList GreatLinkList(int n){
LinkList p,r,list=NULL;
ElemType e;
int i;
for(i=1;i<=n;i++)
{
scanf("%d",&e);
p=(LinkList)malloc(sizeof(LNode));
p->data=e;
p->next=NULL;
if(!list)
list=p; //濡傛灉list涓虹┖錛屽垯璇存槑鏈鐢熸垚鐨勭粨鐐逛負(fù)絎竴涓粨鐐癸紝灝唒璧嬬粰list
else
r->next=p;//鍚﹀垯灝唒璧嬬粰r->next錛岃繖閲宺姘歌繙鎸囧悜鍘熷厛閾捐〃鐨勬渶鍚庝竴涓粨鐐癸紝涔熷氨鏄鎻掑叆緇撶偣鐨勫墠涓涓粨鐐?/span>
r=p;
}
return list;//榪斿洖閾捐〃澶存寚閽?/span>
}
void insertList(LinkList *list,LinkList q,ElemType e)
{
LinkList p;
p=(LinkList)malloc(sizeof(LNode));
p->data=e;
if(!*list){ //褰撻摼琛ㄤ負(fù)絀烘椂錛屽皢p璧嬬粰list錛宲鐨刵ext鍩熺殑鍊肩疆涓虹┖
*list=p;
p->next=NULL;
}
else
{
p->next=q->next;//q涓烘彃鍏ユ寚閽堟寚鍚戠殑緇撶偣
q->next=p;
}
}
void delLink(LinkList *list,LinkList q){
LinkList r;
if(q==*list)//濡傛灉鍒犻櫎絎竴涓粨鐐?/span>
{
*list=q->next;
free(q);
}
else //鍒犻櫎鍏朵粬緇撶偣
{
for(r=*list;r->next!=q;r=r->next);//褰搎鎵鎸囧悜鐨勭粨鐐圭殑鍓嶉┍緇撶偣鐨勬寚閽堟湭鐭ユ椂錛岄渶瑕佸厛閫氳繃閾捐〃澶存寚閽坙ist閬嶅巻閾捐〃錛?br /> //鎵懼埌q鐨勫墠椹辯粨鐐圭殑鎸囬拡錛屽茍鎶婅鎸囬拡璧嬪肩粰鎸囬拡鍙橀噺r
if(r->next!=NULL){
r->next=q->next;
free(q);
}
}
}
void destroyLinkList(LinkList *list){
LinkList p,q;
p=*list;
while(p)//寰幆閲婃斁鎺夋瘡涓摼琛ㄧ粨鐐?/span>
{
q=p->next;
free(p);
p=q;
}
*list=NULL;//灝嗚閾捐〃瀹屽叏緗┖錛岄槻姝ist鍙樻垚閲庢寚閽?/span>
}
void main()
{
int e,i;
LinkList l,q;
q=l=GreatLinkList(1);//鍒涘緩閾捐〃涓涓粨鐐癸紝q鍜宭鎸囧悜璇ョ粨鐐?/span>
scanf("%d",&e);
while(e) //寰幆杈撳叆鏁版嵁錛屽悓鏃舵彃鍏ユ柊鐢熸垚鐨勭粨鐐?/span>
{
insertList(&l,q,e);
q=q->next;
scanf("%d",&e);
}
q=l;
printf("The content of the linklist\n");
while(q) //杈撳嚭閾捐〃涓殑鍐呭
{
printf("%d ",q->data);
q=q->next;
}
q=l;
printf("\nDelete teh fifthe element\n");
for(i=0;i<4;i++)
{
q=q->next;
}//灝嗘寚閽坬鎸囧悜閾捐〃鐨勭5涓厓绱?/span>
delLink(&l,q);
q=l;
while(q)
{
printf("%d ",q->data);
q=q->next;
}
destroyLinkList(&l);
getche();//杈撳叆鍚庣珛鍗充粠鎺у埗鍙板彇瀛楃錛屼笉浠ュ洖杞︿負(fù)緇撴潫(甯﹀洖鏄?
}
]]>