真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

c語言實(shí)現(xiàn)線性結(jié)構(gòu)(數(shù)組與鏈表)-創(chuàng)新互聯(lián)

由于這兩天看了數(shù)據(jù)結(jié)構(gòu),所以又把大學(xué)所學(xué)的c語言和指針"掛"起來了。

創(chuàng)新互聯(lián)公司堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的加格達(dá)奇網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

本人菜鳥一枚請多多指教。下面是我這兩天學(xué)習(xí)的成果(數(shù)組和鏈表的實(shí)現(xiàn),用的是c語言哦!哈哈)。

(一)數(shù)組的實(shí)現(xiàn)和操作。代碼如下:

#include

#include

#include

struct Array{

int length;//數(shù)組長度

int * pBase;//存放數(shù)組首元素的地址

int cnt;//有效元素的個數(shù)

};

void init_arr(struct Array * pArray,int length);//初始化數(shù)組

bool append_arr(struct Array * pArray,int val);//向數(shù)組末尾添加元素

bool insert_arr(struct Array * pArray,int index,int val);//在數(shù)組的某個位置插入元素

bool delete_arr(struct Array * pArray,int index,int * deleteVal);//刪除數(shù)組某個位置的元素

int get(struct Array * pArray, int index);//獲取數(shù)組某個位置的元素

bool is_empty(struct Array * pArray);//判斷數(shù)組是否為空

bool is_full(struct Array * pArray);//判斷數(shù)組是否滿了

void sort_arr(struct Array * pArray);//對數(shù)組進(jìn)行排序

void show_arr(struct Array * pArray);//輸出數(shù)組元素

void inversion_arr(struct Array * pArray);//倒置數(shù)組元素

void main(void){

struct Array array;

int deleteVal;

init_arr(&array,6);

append_arr(&array,22);

append_arr(&array,-22);

//append_arr(&array,3);

insert_arr(&array,2,333);

append_arr(&array,1);

append_arr(&array,33);

append_arr(&array,1);

append_arr(&array,-2);

show_arr(&array);

if(delete_arr(&array,2,&deleteVal)){

printf("刪除的元素是%d\n",deleteVal);

}

show_arr(&array);

if(get(&array,4)!=-1){

printf("取出的元素為%d\n",get(&array,4));

}

sort_arr(&array);

show_arr(&array);

printf("-----\n");

inversion_arr(&array);

show_arr(&array);

}

//初始化數(shù)組

void init_arr(struct Array * pArray,int length){

pArray->pBase = (int *)malloc(sizeof(int)*length);

if(NULL == pArray->pBase){

printf("初始化數(shù)組失敗\n");

exit(-1);

}else{

pArray->cnt = 0;

pArray->length = length;

}

}

//判斷數(shù)組是否為空

bool is_empty(struct Array * pArray){

if(pArray->cnt == 0){

return true;

}else{

return false;

}

}

//判斷數(shù)組是否滿了

bool is_full(struct Array * pArray){

if(pArray->cnt == pArray->length){

return true;

}else{

return false;

}

}

//向數(shù)組末尾添加元素

bool append_arr(struct Array * pArray,int val){

if(!is_full(pArray)){

pArray->pBase[pArray->cnt]= val;

(pArray->cnt)++;

return true;

}

else{

//printf("數(shù)組已滿無法插入\n");

return false;

}

}

//輸出數(shù)組元素

void show_arr(struct Array * pArray){

if(is_empty(pArray)){

printf("數(shù)組為空\n");

}else{

for(int i=0;icnt;i++){

printf("%d\n",pArray->pBase[i]);

}

}

}

//在數(shù)組的某個位置插入元素

bool insert_arr(struct Array * pArray,int index,int val){

if(index>(pArray->cnt)+1 || index<=0 || index==pArray->length || is_full(pArray)){

return false;

}else{

for(int i=pArray->cnt-1;i>=index-1;i--){

pArray->pBase[i+1] = pArray->pBase[i];

}

pArray->pBase[index-1] = val;

pArray->cnt++;

return true;

}

}

//刪除數(shù)組某個位置的元素

bool delete_arr(struct Array * pArray,int index,int * deleteVal){

if(index<=0 || index>pArray->cnt || is_empty(pArray)){

return false;

}else{

*deleteVal = pArray->pBase[index-1];

for(int i = index;icnt;i++)

{

pArray->pBase[i-1] = pArray->pBase[i];

}

pArray->cnt--;

return true;

}

}

//獲取數(shù)組某個位置的元素

int get(struct Array * pArray,int index){

if(index<=0 || is_empty(pArray) || index > pArray->cnt){

return -1;

}else{

return pArray->pBase[index-1];

}

}

//對數(shù)組進(jìn)行排序

void sort_arr(struct Array * pArray){

if(is_empty(pArray)){

printf("此數(shù)組為空不能排序\n");

}else{

int t;

for(int i = 0;icnt-1;i++){

for(int j = i+1;jcnt;j++){

if(pArray->pBase[j]pBase[i]){

t = pArray->pBase[i];

pArray->pBase[i] = pArray->pBase[j];

pArray->pBase[j] = t;

}

}

}

}

}

//倒置數(shù)組元素

void inversion_arr(struct Array * pArray){

if(!is_empty(pArray) || !pArray->cnt ==1){

int i = 0;

int j = pArray->cnt-1;

int t;

while(i

t = pArray->pBase[i];

pArray->pBase[i] = pArray->pBase[j];

pArray->pBase[j] = t;

i++;

j--;

}

}

}

運(yùn)行結(jié)果如下:

c語言實(shí)現(xiàn)線性結(jié)構(gòu)(數(shù)組與鏈表)

(二)鏈接的實(shí)現(xiàn)和操作。代碼如下:

#include

#include

#include

typedef struct Node{

int data;

Node * pNext;

}NODE,*PNODE;

//初始化鏈表

PNODE createList(int);

//遍歷鏈表

void traverse_list(PNODE);

//判斷鏈表是否為空

bool is_empty(PNODE);

//返回鏈表的長度

int length_list(PNODE);

//向鏈表中插入節(jié)點(diǎn)

bool insert_list(PNODE,int,int);

//刪除某個節(jié)點(diǎn)

bool delete_list(PNODE,int,int *);

//為鏈表排序

void sort_list(PNODE);

//主函數(shù)

void main(void){

int leng;

PNODE pHead;

int val;

printf("請您輸入鏈表的長度\n");

scanf("%d",&leng);

pHead = createList(leng);

//traverse_list(pHead);

if(is_empty(pHead)){

printf("鏈表為空\n");

}

//printf("鏈表的長度為%d\n",length_list(pHead));

//sort_list(pHead);

insert_list(pHead,3,111);

traverse_list(pHead);

if(delete_list(pHead,3,&val)){

printf("刪除的節(jié)點(diǎn)為%d\n",val);

}

traverse_list(pHead);

}

//初始化鏈表

PNODE createList(int leng){

PNODE pHead;

pHead = (NODE *)malloc(sizeof(NODE));

if(NULL == pHead){

printf("初始化鏈表失敗\n");

exit(-1);

}

PNODE pTail = pHead;

pTail->pNext = NULL;

for(int i=1;i<=leng;i++){

int val;

PNODE pNew = (NODE *)malloc(sizeof(NODE));

printf("請輸入第%d個值:",i);

scanf("%d",&val);

pNew->data = val;

pNew->pNext = NULL;

pTail->pNext = pNew;

pTail = pNew;

}

return pHead;

}

//遍歷鏈表

void traverse_list(PNODE pHead){

PNODE p = pHead;

if(p->pNext == NULL){

printf("鏈表為空\n");

}

while(p->pNext != NULL){

p = p->pNext;

printf("%d\n",p->data);

}

}

//判斷鏈表是否為空

bool is_empty(PNODE pHead){

if(pHead->pNext == NULL){

return true;

}else{

return false;

}

}

//返回鏈表的長度

int length_list(PNODE pHead){

PNODE p = pHead;

int leng = 0;

while(p->pNext != NULL){

p = p->pNext;

leng++;

}

return leng;

}

//向鏈表中插入節(jié)點(diǎn)

bool insert_list(PNODE pHead,int index,int val){

int i = 0;

PNODE p = pHead;

while(p->pNext!=NULL && i

p = p->pNext;//p->1;p->2

i++;//1;2

}

if(p->pNext == NULL ||  i>index-1){

return false;

}

PNODE pNew = (PNODE)malloc(sizeof(NODE));

if(pNew == NULL){

printf("初始化節(jié)點(diǎn)失敗\n");

exit(-1);

}

pNew->data = val;

pNew->pNext = p->pNext;

p->pNext = pNew;

return true;

}

//刪除某個節(jié)點(diǎn)

bool delete_list(PNODE pHead,int index,int * val){

int i = 0;

PNODE p = pHead;

while(p->pNext!=NULL && i

p = p->pNext;//p->1;p->2

i++;//1;2

}

if(p->pNext == NULL ||  i>index-1){

return false;

}

PNODE delNode = p->pNext;

*val = delNode->data;

p->pNext = delNode->pNext;

free(delNode);

return true;

}

//為鏈表排序

void sort_list(PNODE pHead){

int t,i,j;

PNODE p,q;

for(i=0,p = pHead;ipNext){

for(j=i+1,q = p->pNext;j<=length_list(pHead);j++,q = q->pNext){

if(p->data > q->data){

t = p->data;

p->data = q->data;

q->data = t;

}

}

}

}

運(yùn)行結(jié)果如下:

c語言實(shí)現(xiàn)線性結(jié)構(gòu)(數(shù)組與鏈表)

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。


網(wǎng)頁名稱:c語言實(shí)現(xiàn)線性結(jié)構(gòu)(數(shù)組與鏈表)-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/ddpjji.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部