當前位置:首頁 » 操作系統 » 數據結構演算法代碼實現

數據結構演算法代碼實現

發布時間: 2022-07-28 06:16:25

❶ 數據結構C語言——實現各種排序演算法

剛做完的
#include <iostream>
using namespace std;

void BiInsertsort(int r[], int n) //插入排序(折半)
{
for(int i=2;i<=n;i++)
{
if (r[i]<r[i-1])
{
r[0] = r[i]; //設置哨兵
int low=1,high=i-1; //折半查找
while (low<=high)
{
int mid=(low+high)/2;
if (r[0]<r[mid]) high=mid-1;
else low = mid+1;
}
int j;
for (j=i-1;j>high;j--) r[j+1] = r[j]; //後移
r[j+1] = r[0];
}
}
for(int k=1;k<=n;k++) cout<<r[k]<<" ";
cout<<"\n";
}

void ShellSort ( int r[], int n) //希爾排序
{
for(int d=n/2;d>=1;d=d/2) //以d為增量進行直接插入排序
{
for (int i=d+1;i<=n;i++)
{
r[0] = r[i]; //暫存被插入記錄
int j;
for( j=i-d; j>0 && r[0]<r[j]; j=j-d) r[j+d] = r[j]; //記錄後移d個位置
r[j+d] = r[0];

}
}
for(int i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

void BubbleSort(int r[], int n) //起泡排序
{
int temp,exchange,bound;
exchange=n; //第一趟起泡排序的范圍是r[0]到r[n-1]
while (exchange) //僅當上一趟排序有記錄交換才進行本趟排序
{
bound=exchange;
exchange=0;
for (int j=1; j<bound; j++) //一趟起泡排序
if (r[j]>r[j+1])
{
temp=r[j];
r[j]=r[j+1];
r[j+1]=temp;
exchange=j; //記錄每一次發生記錄交換的位置
}
}
for(int i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

int Partition(int r[], int first, int end) //快速排序一次劃分
{
int i=first; //初始化
int j=end;
r[0]=r[first];
while (i<j)
{
while (i<j && r[0]<= r[j]) j--; //右側掃描
r[i]=r[j];
while (i<j && r[i]<= r[0]) i++; //左側掃描
r[j]=r[i];
}
r[i]=r[0];
return i; //i為軸值記錄的最終位置
}
void QuickSort(int r[], int first, int end) //快速排序
{
if (first<end)
{ //遞歸結束
int pivot=Partition(r, first, end); //一次劃分
QuickSort(r, first, pivot-1);//遞歸地對左側子序列進行快速排序
QuickSort(r, pivot+1, end); //遞歸地對右側子序列進行快速排序
}
}

void SelectSort(int r[ ], int n) //簡單選擇排序
{
int i,j,index,temp;
for (i=1; i<n; i++) //對n個記錄進行n-1趟簡單選擇排序
{
index=i;
for (j=i+1; j<=n; j++) //在無序區中選取最小記錄
if (r[j]<r[index]) index=j;
if (index!=i)
{
temp=r[i];
r[i]=r[index];
r[index]=temp;
}
}
for(i=1;i<=n;i++) cout<<r[i]<<" ";
cout<<"\n";
}

void main()
{
const int numv=12;
int a[3][numv]={{0,6,13,19,23,37,39,41,45,48,58,86},{0,86,58,48,45,41,39,37,23,19,13,6},{0,23,13,48,86,19,6,41,58,37,45,39}};
int z1[numv],z2[numv];
int m,n;
cout<<"請選擇測試數據類型:⑴正序 ⑵逆序 ⑶隨機 [ 若跳出,請按⑷ ]" <<endl;
cin>>m;
while(m>0&&m<4)
{
cout<<"請選擇排序演算法:⑴直接插入排序 ⑵希爾排序 ⑶冒泡排序 ⑷快速排序 \n ⑸簡單選擇排序"<<endl;
cin>>n;
switch(n)
{
case 1:
cout << "直接插入排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n直接插入排序結果為:" << "\n";
BiInsertsort(a[m-1],numv-1);
break;
case 2:
cout << "\n希爾排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n希爾排序結果為:" << "\n";
ShellSort(a[m-1], numv-1);
break;
case 3:
cout << "\n冒泡排序前:" << "\n";
for(int k=1;k<numv;k++) cout<<a[m-1][k]<<" ";
cout << "\n冒泡排序結果為:" << "\n";
BubbleSort(a[m-1], numv-1);
break;
case 4:
cout << "\n快速排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n快速排序結果為:" << "\n";
QuickSort(a[m-1],0,numv-1);
for(int i=1;i<numv;i++)
cout<<a[m-1][i]<<" ";
cout<<"\n";
break;
case 5:
cout << "\n簡單選擇排序前:" << "\n";
for(int j=1;j<numv;j++) cout<<a[m-1][j]<<" ";
cout << "\n簡單選擇排序結果為:" << "\n";
SelectSort(a[m-1],numv-1);
break;

default:
cout<<"輸入錯誤!"<<endl;
}
m=0;
cout<<"請選擇測試數據類型:⑴正序 ⑵逆序 ⑶隨機 [ 若跳出,請按⑷ ]" <<endl;
cin>>m;
}
if(m==4) cout<<"(*^__^*) 再見!"<<endl;
else cout<<"輸入錯誤!"<<endl;
}

❷ 數據結構演算法設計C++實現

所謂排序,就是要整理文件中的記錄,使之按關鍵字遞增(或遞減)次序排列起來。其確切定義如下:
輸入:n個記錄R1,R2,…,Rn,其相應的關鍵字分別為K1,K2,…,Kn。
輸出:Ril,Ri2,…,Rin,使得Ki1≤Ki2≤…≤Kin。(或Ki1≥Ki2≥…≥Kin)。 這里,我們簡單介紹幾種排序方法,直接插入排序、希兒排序、冒泡排序、快速排序、直接選擇排序,文中所提及的代碼在IE6下測試通過。 直接插入排序基本思想
假設待排序的記錄存放在數組R[1..n]中。初始時,R[1]自成1個有序區,無序區為R[2..n]。從i=2起直至i=n為止,依次將R[i]插入當前的有序區R[1..i-1]中,生成含n個記錄的有序區。 演算法描述
function InsertSort(arr) { //插入排序->直接插入法排序
var st = new Date();
var temp, j;
for(var i=1; i<arr.length; i++) {
if((arr[i]) < (arr[i-1])) {
temp = arr[i];
j = i-1;
do {
arr[j+1] = arr[j];
j--;
}
while (j>-1 && (temp) < (arr[j]));
arr[j+1] = temp;
}//endif
}
status = (new Date() - st) + ' ms';
return arr;
} 希爾排序基本思想
先取一個小於n的整數d1作為第一個增量,把文件的全部記錄分成d1個組。所有距離為dl的倍數的記錄放在同一個組中。先在各組內進行直接插人排序;然後,取第二個增量d2<d1重復上述的分組和排序,直至所取的增量dt=1(dt<dt-l<…<d2<d1),即所有記錄放在同一組中進行直接插入排序為止。
該方法實質上是一種分組插入方法。 演算法描述
function ShellSort(arr) { //插入排序->希兒排序
var st = new Date();
var increment = arr.length;
do {
increment = (increment/3|0) + 1;
arr = ShellPass(arr, increment);
}
while (increment > 1) status = (new Date() - st) + ' ms';
return arr;
}
function ShellPass(arr, d) { //希兒排序分段執行函數
var temp, j;
for(var i=d; i<arr.length; i++) {
if((arr[i]) < (arr[i-d])) {
temp = arr[i]; j = i-d;
do {
arr[j+d] = arr[j];
j = j-d;
}
while (j>-1 && (temp) < (arr[j]));
arr[j+d] = temp;
}//endif
}
return arr;
} 再舉個例子:#include "iostream.h"
void shellSort(int *arr, int len, int *p, int len1);
int main()
{
int num[15]={100,12,20,31,1,5,44,66,61,200,30,80,150,4,8};
int i;
cout<<"待排數據d=(5,3,1): ";
for(i=0;i<15;i++)
{
cout<<num[i]<<" ";
}
int s[3]={5,3,1};
shellSort(num,15, s,3);
cout<<"\n";
return 0;
} void shellSort(int *arr, int len, int *p, int len1)
{
for (int i = 0; i < len1; i++)
{
int d = p[i];
for (int n = 0; n < d; n ++)
{
for (int j = n + d; j < len; j = j + d)
{
if (arr[j] < arr[j - d])
{
int tmp = arr[j];
for (int k = j - d; k >= 0 && arr[k] > tmp; k = k - d)
{
arr[k + d] = arr[k];
}
arr[k + d] = tmp;
}
}
}
cout<<"第"<<i+1<<"趟排序結果:";
for(int m=0;m<15;m++)
cout<<arr[m]<<" ";
cout<<"\n";
}
}
冒泡排序基本思想
將被排序的記錄數組R[1..n]垂直排列,每個記錄R[i]看作是重量為R[i].key的氣泡。根據輕氣泡不能在重氣泡之下的原則,從下往上掃描數組R:凡掃描到違反本原則的輕氣泡,就使其向上"飄浮"。如此反復進行,直到最後任何兩個氣泡都是輕者在上,重者在下為止。
演算法描述
function BubbleSort(arr) { //交換排序->冒泡排序
var st = new Date();
var temp;
var exchange;
for(var i=0; i<arr.length; i++) {
exchange = false;
for(var j=arr.length-2; j>=i; j--) {
if((arr[j+1]) < (arr[j])) {
temp = arr[j+1];
arr[j+1] = arr[j];
arr[j] = temp;
exchange = true;
}
}
if(!exchange) break;
}
status = (new Date() - st) + ' ms';
return arr;
} 快速排序基本思想
將原問題分解為若干個規模更小但結構與原問題相似的子問題。遞歸地解這些子問題,然後將這些子問題的解組合為原問題的解。
在R[low..high]中任選一個記錄作為基準(Pivot),以此基準將當前無序區劃分為左、右兩個較小的子區間R[low..pivotpos-1)和R[pivotpos+1..high],並使左邊子區間中所有記錄的關鍵字均小於等於基準記錄(不妨記為pivot)的關鍵字pivot.key,右邊的子區間中所有記錄的關鍵字均大於等於pivot.key,而基準記錄pivot則位於正確的位置(pivotpos)上,它無須參加後續的排序。 演算法描述
function QuickSort(arr) { //交換排序->快速排序
if (arguments.length>1) {
var low = arguments[1];
var high = arguments[2];
} else {
var low = 0;
var high = arr.length-1;
}
if(low < high){
// function Partition
var i = low;
var j = high;
var pivot = arr[i];
while(i<j) {
while(i<j && arr[j]>=pivot)
j--;
if(i<j)
arr[i++] = arr[j];
while(i<j && arr[i]<=pivot)
i++;
if(i<j)
arr[j--] = arr[i];
}//endwhile
arr[i] = pivot;
// end function
var pivotpos = i; //Partition(arr,low,high);
QuickSort(arr, low, pivotpos-1);
QuickSort(arr, pivotpos+1, high);
} else
return;
return arr;
} 直接選擇排序基本思想
n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果:
①初始狀態:無序區為R[1..n],有序區為空。
②第1趟排序
在無序區R[1..n]中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[1]交換,使R[1..1]和R[2..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
……
③第i趟排序
第i趟排序開始時,當前有序區和無序區分別為R[1..i-1]和R[i..n](1≤i≤n-1)。該趟排序從當前無序區中選出關鍵字最小的記錄R[k],將它與無序區的第1個記錄R[i]交換,使R[1..i]和R[i+1..n]分別變為記錄個數增加1個的新有序區和記錄個數減少1個的新無序區。
這樣,n個記錄的文件的直接選擇排序可經過n-1趟直接選擇排序得到有序結果。 演算法描述
function SelectSort(arr) { //選擇排序->直接選擇排序
var st = new Date();
var temp;
for(var i=0; i<arr.length; i++) {
var k = i;
for(var j=i+1; j<arr.length; j++) {
if((arr[j]) < (arr[k]))
k = j;
}
if (k != i){
temp = arr[i];
arr[i] = arr[k];
arr[k] = temp;
}
}
status = (new Date() - st) + ' ms';
return arr;
}
從運行速度上來看,快速排序是最快的。 另外把二分查找演算法也放這里算了:template<class Type> int BinarySearch(Type a[],const Type& x,int n) { int left=0; int right=n-1; while(left<=right){ int middle=(left+right)/2; if (x==a[middle]) return middle; if (x>a[middle]) left=middle+1; else right=middle-1; } return -1; }

❸ 剛學數據結構,題目不會,給個代碼(演算法)參考

1
#include "stdio.h"

#define MAXSIZE 32

typedef char datatype;

typedef struct _Node{
datatype data;
_Node *lchild, *rchild;
}Node, *PNode, *PBitTree;

void visit(PNode node){
printf("%c\t", node->data);
}

(1)
void PreOrder(PBitTree root){
if(!root) return;
visit(root);
PreOrder(root->lchild);
PreOrder(root->rchild);
}

void InOrder(PBitTree root){
if(!root) return;
InOrder(root->lchild);
visit(root);
InOrder(root->rchild);
}

void PostOrder(PBitTree root){
if(!root) return;
PostOrder(root->lchild);
PostOrder(root->rchild);
visit(root);
}

(2)
void Display(PBitTree root){
PNode nodeQueue[MAXSIZE]; /*結點隊列*/
int levelQueue[MAXSIZE]; /*用於保存結點層次信息的隊列*/
int front=0, rear=0, curlevel = 0, bline = 0; /*bline用於判斷是否需要換行*/
PNode p = root;
if(p) { /*根結點入隊*/
nodeQueue[rear] = p;
levelQueue[rear] = 0;
rear = (rear + 1) % MAXSIZE;
}
while(front != rear) { /*如果隊列不空*/
p = nodeQueue[front]; /*獲取隊首元素*/
bline = levelQueue[front] != curlevel ? 1 : 0; /*判斷是否需要換行*/
curlevel = levelQueue[front];
front = (front + 1) % MAXSIZE; /*出隊*/
if(bline) printf("\n"); /*如果需要換行,則輸出換行符*/
visit(p);
if(p->lchild) { /*如果左孩子不空,將左孩子入隊*/
nodeQueue[rear] = p->lchild;
levelQueue[rear] = curlevel + 1;
rear = (rear + 1) % MAXSIZE;
if(p->rchild) { /*如果右孩子不空,將右孩子入隊*/
nodeQueue[rear] = p->rchild;
levelQueue[rear] = curlevel + 1;
rear = (rear + 1) % MAXSIZE;
}
}
}

(3)
void Exchange(PBitTree root) {
if(!root) return;
PNode tmp;
Exchange(root->lchild);
Exchange(root->rchild);
tmp = root->lchild;
root->lchild = root->rchild;
root->rchild = tmp;
}

2
typedef char datatype;

typedef struct _listNode{
datatype data;
_listNode *next;
}RQueueNode, *PRQueueNode, *PRQueue;

PRQueue rear;

void InitRQueue( ) { /*初始化隊列*/
rear = (PRQueue) malloc(sizeof(RQueueNode)); /*生成附加頭結點*/
rear->next = rear; /*設置為循環的空隊*/
}

void EnRQueue(datatype x) { /*入隊*/
PRQueueNode *newNode;
newNode = (PRQueue) malloc(sizeof(RQueueNode)); //生成新結點
newNode->data = x;
newNode->next = rear->next; /*將新結點鏈接到隊尾*/
rear->next = newNode;
rear = newNode; /*將新結點作為新的隊尾*/
}

datatype DeRQueue( ) { /*出隊*/
PRQueueNode *front; /*隊首指針*/
datatype tmp; /*用於返回隊首元素數據*/
assert(rear->next != rear); /*斷言隊列不空*/
front = rear->next->next;
rear->next->next = front->next;
if(rear == front) rear = rear->next; /*如果出隊的是隊列中的最後一個結點*/
tmp = front->data;
free(front);
return tmp;
}

❹ C語言數據結構演算法題求完整代碼

void表示空值,一般用來表示函數無形參或者不返回值,因為是空值所以不佔儲存空間。此外在C語言中,指向void的指針被用來表示任意類型的指針(void *),用於轉換不同類型的指針以及做指針運算等等。...

❺ 《數據結構》演算法實現與分析高一凡中的源代碼要怎麼用

這個代碼可以直接用。用的時候必須把include中的文件也保存好。

❻ 數據結構排序演算法(C描述)

看看可以不#include<stdio.h>#include<stdlib.h> #define TRUE 1#define FALSE 0#define OK 1#define ERROR#define OVERFLOW -2#define MAXSIZE 20 //一個用作示例的小順序表的最大長度#define LT(a,b) ((a)<(b))#define LQ(a,b) ((a)<=(b)) typedef int KeyType;//定義關鍵字類型為整數類型typedef int InfoType;typedef struct{ KeyType key;//關鍵字項 InfoType otherinfo;//其他數據項}RedType;//記錄類型typedef struct{ RedType r[MAXSIZE+1];//r[0]閑置或用作哨兵單元 int length;//順序表長度}SqList;//順序表類型 int InitList_Sq(SqList &L){//構造一個空的順序表L。 int i; printf("請輸入待排序的記錄的個數:"); scanf("%d",&L.length); printf("請輸入待排序的記錄的關鍵字(整型數):"); for(i=1;i<=L.length;i++) scanf("%d",&L.r[i]); return OK;} void Print_Sq(SqList &L) //輸出{ int i; for(i=1;i<=L.length;i++) { printf("%4d",L.r[i]); } printf("\n");} //------------插入排序---void InsertSort(SqList &L){//對順序表L作直接插入排序。 int i,j; for(i=2;i<=L.length;++i) if(LT(L.r[i].key,L.r[i-1].key))//「<」,需將L.r[i]插入有序子表 { L.r[0]=L.r[i];//復制為哨兵 L.r[i]=L.r[i-1]; for(j=i-2;LT(L.r[0].key,L.r[j].key);--j) L.r[j+1]=L.r[j];//記錄後移 L.r[j+1]=L.r[0];//插入到正確位置 }}//--------------冒泡排序---void BubbleSort(SqList &L){//L.r是待排序的文件,採用自下向上掃描,對L.r做冒泡排序 int i,j; int exchange; // 交換標志 for(i=1;i<L.length;i++) {// 最多做 n-1 趟排序 exchange=FALSE; // 本趟排序開始前,交換標志應為假 for(j=L.length-1;j>=i;j--) // 對當前無序區 R[i..n] 自下向上掃描 if(LT(L.r[j+1].key,L.r[j].key)) { // 交換記錄 L.r[0]=L.r[j+1]; //L.r[0]不是哨兵,僅做暫存單元 L.r[j+1]=L.r[j]; L.r[j]=L.r[0]; exchange=TRUE; // 發生了交換,故將交換標志置為真 } if(!exchange) // 本趟排序未發生交換,提前終止演算法 return; } }//-----------快速排序---int Partition(SqList &L,int low,int high){//交換順序表L中子表r[low..high]的記錄,樞軸記錄到位,並返回其所在位置,此時 //在它之前(後)的記錄均不大(小)於它。 KeyType pivotkey; L.r[0]=L.r[low];//用子表的第一個記錄作樞軸記錄 pivotkey=L.r[low].key;//樞軸記錄關鍵字 while(low<high) {//從表的兩端交替地向中間掃描 while (low<high&&L.r[high].key>=pivotkey) --high; L.r[low]=L.r[high];//將比樞軸記錄小的記錄移到低端 while (low<high&&L.r[low].key<=pivotkey) ++low; L.r[high]=L.r[low];//將比樞軸記錄大的記錄移到高端 } L.r[low]=L.r[0];//樞軸記錄到位 return low;//返回樞軸位置} void QSort(SqList &L,int low,int high){//對順序表L中的子序列L.r[low..high]進行快速排序 int pivotloc; if(low<high) {//長度大於1 pivotloc=Partition(L,low,high);//將L.r[low..high]一分為二 QSort(L,low,pivotloc-1);//對低子表遞歸排序pivotloc是樞軸位置 QSort(L,pivotloc+1,high);//對高子表遞歸排序 }} void QuickSort(SqList &L){//對順序表L作快速排序。 QSort(L,1,L.length);}//----------歸並排序---void Merge(RedType SR[],RedType TR[],int i,int m,int n){//將有序的SR[i..m]和SR[m+1..n]歸並為有序的TR[i..n] int j,k; for(j=m+1,k=i;i<=m&&j<=n;++k) {//將SR中記錄由小到大地並入TR if LQ(SR[i].key,SR[j].key) TR[k]=SR[i++]; else TR[k]=SR[j++]; } if(i<=m)//TR[k..n]=SR[i..m];將剩餘的SR[i..m]復制到TR while(k<=n&&i<=m) TR[k++]=SR[i++]; if(j<=n)//將剩餘的SR[j..n]復制到TR while(k<=n&&j<=n) TR[k++]=SR[j++];} void MSort(RedType SR[],RedType TR1[],int s,int t){//將SR[s..t]歸並排序為TR1[s..t]。 int m; RedType TR2[20]; if(s==t) TR1[t] = SR[s]; else { m=(s+t)/2;//將SR[s..t]平分為SR[s..m]和SR[m+1..t] MSort(SR,TR2,s,m);//遞歸地將SR[s..m]歸並為有序的TR2[s..m] MSort(SR,TR2,m+1,t);//將SR[m+1..t]歸並為有序的TR2[m+1..t] Merge(TR2,TR1,s,m,t);//將TR2[s..m]和TR2[m+1..t]歸並到TR1[s..t] }} void MergeSort(SqList &L){// 對順序表L作歸並排序。 MSort(L.r, L.r, 1, L.length);}//-----------堆排序---void HeapAdjust(SqList &H,int s,int m){//已知H.r[s..m]中記錄的關鍵字除H.r[s].key之外均滿足堆的定義, //本函數調整H.r[s]的關鍵字,使H.r[s..m]成為一個大頂堆 //(對其中記錄的關鍵字而言) int j; RedType rc; rc=H.r[s]; for(j=2*s;j<=m;j*=2) {//沿key較大的孩子結點向下篩選 if(j<m&&H.r[j].key<H.r[j+1].key) ++j;//j為key較大的記錄的下標 if(rc.key>=H.r[j].key) break;//rc應插入在位置s上 H.r[s]=H.r[j]; s=j; } H.r[s]=rc;//插入} void HeapSort(SqList &H){//對順序表H進行堆排序。 int i; RedType temp; for(i=H.length/2;i>0;--i)//把H.r[1..H.length]建成大頂堆 HeapAdjust(H,i,H.length); for(i=H.length;i>1;--i) { temp=H.r[i]; H.r[i]=H.r[1]; H.r[1]=temp;//將堆頂記錄和當前未經排序子序列Hr[1..i]中 //最後一個記錄相互交換 HeapAdjust(H,1,i-1);//將H.r[1..i-1]重新調整為大頂堆 }} void main(){ SqList S; printf("---------- 五種排序演算法 ----------\n"); InitList_Sq(S); printf(" 1.簡單插入排序\n"); InsertSort(S); Print_Sq(S); printf(" 2.冒泡排序\n"); BubbleSort(S); Print_Sq(S); printf(" 3.快速排序\n"); QuickSort(S); Print_Sq(S); printf(" 4.歸並排序\n"); MergeSort(S); Print_Sq(S); printf(" 5.堆排序\n"); HeapSort(S); Print_Sq(S);}

❼ 數據結構與演算法C語言的一段代碼

struct 不能這樣賦值吧

❽ 求數據結構演算法平衡二叉樹實現代碼

抄的,你能看懂就行。平衡二叉樹實現代碼
#include <stdio.h>
typedef struct bitreetype
{
int item;
int bdegree;/*平衡因子,左子樹深度-右子樹深度*/
struct bitreetype *lchild;
struct bitreetype *rchild;
}bitree;
typedef struct treequeuetype
{
int head;
int tail;
bitree *items[1000];
}treequeue;/*定義一個隊列,後面的平衡調整要用層序遍歷,於是要用這個隊列*/
void resetqueue(treequeue *queue)
{
queue->head=-1;
queue->tail=-1;
return;
}/*把隊列清空*/
void inqueue(treequeue *queue,bitree *element)
{
queue->tail++;
queue->items[queue->tail]=element;
}/*入隊列*/
bitree *outqueue(treequeue *queue)
{
queue->head++;
return queue->items[queue->head];
}/*出隊列*/
int isqueueempty(treequeue *queue)
{
if(queue->head==queue->tail)
return 1;
else
return 0;
}/*判斷隊列是否為空*/
void fillmemory(char *source,int len,char content)
{
while(len)
{
source=source+len;
*source=content;
source=source-len;
len--;
}
*source=0;
}/*用CONTENT的內容去FILL以SOURCE為首,LEN長度的一塊空間,初始化內存方便*/
int getnums(int *dst)/*輸入字元串並把字元串轉化為一串數存入DST指向的內存中去,我們用它採集原始數據*/
{
char *temp,*num,*p,t;
int len=0;
temp=(char *)malloc(1000*sizeof(char));
num=(char *)malloc(20*sizeof(char));
p=num;
fillmemory(temp,1000,0);
fillmemory(num,20,0);
scanf(\"%s\",temp);
t=*temp;
temp++;
while(t)
{
if(t!=\』,\』)
{
*num=t;
num++;
t=*temp;
temp++;
}/*抽出一個數放入NUM臨時空間中*/
else
{
num=p;
*dst=atoi(num);
len++;
fillmemory(num,20,0);
dst++;
t=*temp;
temp++;
}/*將NUM中的數字轉化出來存入DST中*/
}
num=p;
*dst=atoi(num);
len++;
fillmemory(num,20,0);
dst++;
t=*temp;
temp++;
return len;
}/*處理最後一個數字*/

熱點內容
linux調試匯編 發布:2025-03-15 08:38:09 瀏覽:106
手機上編寫c語言 發布:2025-03-15 08:17:53 瀏覽:754
上傳迅雷下載速度 發布:2025-03-15 08:07:50 瀏覽:554
好看解壓書 發布:2025-03-15 08:04:18 瀏覽:672
文字頁游源碼 發布:2025-03-15 08:02:29 瀏覽:315
怎麼看自己微信密碼 發布:2025-03-15 07:53:58 瀏覽:791
androidchecked 發布:2025-03-15 07:50:22 瀏覽:551
百度carplay怎麼連接安卓手機 發布:2025-03-15 07:49:39 瀏覽:24
捕捉圖片上傳 發布:2025-03-15 07:49:01 瀏覽:796
手機內核升級編譯 發布:2025-03-15 07:43:22 瀏覽:237