C語言小演算法_2_靜態隊列操作

來源:互聯網
上載者:User
/*
本程式測試線性隊列的資料結構
*/

#include <stdio.h>

#define MAXSIZE 1024

typedef struct node
{
int data[MAXSIZE];
int length;
} SeqList;


/*
函數功能:
初始化線性隊列
函數原型:
void SeqListInit(SeqList *pSeqList,int n)
函數參數:
SeqList *pSeqList: 待初始化隊列首指標
int n:資料元素的個數
異常:
傳遞null 指標,
資料元素的個數大於 MAXSIZE
*/
void SeqListInit(SeqList *pSeqList,int n)
{
int i;

if(NULL==pSeqList || n > MAXSIZE || n<0 )
{
printf("Error\n");
return ;
}

for(i=0;i<n;++i)
{
printf("Please input the %d th elements:",i);
scanf("%d",&pSeqList->data[i]);
}
pSeqList->length=n;
}

/*
函數功能:
列印線性隊列
函數原型:
void SeqListPrint(SeqList *pSeqList)
函數參數:
SeqList *pSeqList: 線性隊列的地址
異常:
傳遞null 指標
*/
void SeqListPrint(SeqList *pSeqList)
{
int i;

if(pSeqList == NULL )
{
printf("Error\n");
return ;
}


i=0;
while(i < pSeqList->length )
{
printf("%-6d",(*pSeqList).data[i]);
if( ++i % 5 == 0 )
putc('\n',stdout);
}

putchar('\n');
}

/*
函數功能:
在隊列的第n個位置插入一個新的元素
函數原型:
void SeqListInsert(SeqList *pSeqList,int n,int element)
函數參數:
SeqList *pSeqList:隊列的地址
int n: 要插入資料的位置
int element:要插入的資料
異常:
傳遞null 指標
插入位置小於 0 或者大於 MAXSIZE
*/
void SeqListInsert(SeqList *pSeqList,int n,int element)
{
int i;

if(n < 0 || n > MAXSIZE || pSeqList == NULL )
{
puts("Error\n");
return ;
}

i= pSeqList->length;
while(i>=n) //若條件為 i> n 時將新資料插入到 n 後面
{
pSeqList->data[i]=pSeqList->data[i-1];
--i;
}
pSeqList->data[i]=element;

++pSeqList->length;
}

/*
函數功能:
刪除隊列中指定位置的元素
函數原型:
void SeqListDel(SeqList *pSeqList,int n)
函數參數:
SeqList *pSeqList: 待刪除元素隊列的地址
int n:要刪除的元素的位置
異常:
傳遞null 指標
n 小於 0 或 n 大於隊列中資料元素的長度,或者 n 大於 MAXSIZE
*/
void SeqListDel(SeqList *pSeqList, int n)
{
int i;

if(n<0 || n>(*pSeqList).length || pSeqList==NULL)
{
puts("Error\n");
return ;
}

i=n;
while(i < (*pSeqList).length )
{
pSeqList->data[i-1]=pSeqList->data[i];
++i;
}
pSeqList->data[i]=0;
--(*pSeqList).length;

}

/*
函數功能:
尋找隊列中是否存在某個元素,若存在則返回元素的位置
函數原型:
unsigned int SeqListSearch(SeqList *pSeqList,int element)
函數參數:
SeqList *pSeqList: 待尋找元素所在隊列的地址
int element:待尋找的元素
異常:
傳遞null 指標
*/
void SeqListSearch(SeqList *pSeqList,int element,int *ele_pos)
{
int i;

if(NULL==pSeqList)
{
puts("Error:Empty Pointer\n");
return ;
}

for(i=0;i< pSeqList->length;++i)
if(pSeqList->data[i]==element)
         {
*ele_pos=++i;
          return ;
          }

*ele_pos=0;
}

/*
函數功能:
將隊列的資料按照升序排列
函數原型:
void SeqListSort(SeqList *pSeqList)
函數參數:
SeqList *pSeqList:待排序隊列地址
異常:
傳遞null 指標
Tip:
採用冒泡法排序
*/
void SeqListSort(SeqList *pSeqList)
{
int i,
j,
i_varTemp;

if(NULL==pSeqList)
{
puts("Error:Empty Pointer\n");
return ;
}

for(i=0;i<pSeqList->length;++i)
for(j=0;j < pSeqList->length - i - 1;++j)
{
if(pSeqList->data[j]>=pSeqList->data[j+1])
{
i_varTemp=pSeqList->data[j];
pSeqList->data[j]=pSeqList->data[j+1];
pSeqList->data[j+1]=i_varTemp;
}
}

}


int main(int argc,char *argv[])
{
int seq_len;
int insert_element;
int element_pos;
SeqList SeqListTest;

printf("Please enter the length of the seq: n < 1024");
scanf("%d",&seq_len);

SeqListInit(&SeqListTest,seq_len);
SeqListPrint(&SeqListTest);

puts("Enter the element you wanna insert to the seq:");
scanf("%d",&insert_element);
SeqListInsert(&SeqListTest,4,insert_element);
puts("After insert:\n");
SeqListPrint(&SeqListTest);

SeqListDel(&SeqListTest,1);
puts("After delete element");
SeqListPrint(&SeqListTest);

SeqListSearch(&SeqListTest,3,&element_pos);
if(0 != element_pos)
printf("The position of 3 in the seq is:%d\n",element_pos);
else
puts("No such element in the seq\n");

SeqListSort(&SeqListTest);
SeqListPrint(&SeqListTest);

return 0;
}

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.