雙向鍊錶的建立與操作

2021-09-24 14:23:20 字數 2735 閱讀 6933

/*

專案名稱:雙向鍊錶的建立與基本操作

編譯環境:vc++ 2008

作者相關:。。。

最後修改:2019.6.19

學習目標:判空、求長、獲取元素位置、返回某個位置的元素、插入元素、刪除元素、清空鍊錶、銷毀鍊錶

注意事項:1.測試所有功能是否正常

2.true/false不是資料型別,不能用typedef,要使用define

3.null本身沒有prior和next

*/#include #include #define ok 1

#define error 0

#define true true

#define false false

typedef int elemtype;

typedef bool status;

typedef struct dulnodedulnode,*dulinklist;

status create_dulnode(dulinklist *l);

status init_dul(dulinklist *l);

status empty_dul(dulinklist l);

int length_dul(dulinklist l);

status insert_dul(dulinklist *l,int i,elemtype e);

status getelem_dul(dulinklist l,int i,elemtype *e);

int locate_dul(dulinklist l,elemtype e);

status delete_dul(dulinklist *l,int i,elemtype *e);

status clear_dul(dulinklist *l);

status destroy_dul(dulinklist *l);

void out_list(dulinklist l);

int main()

out_list(l1);

getelem_dul(l1,4,&e);

printf("第4個元素是: %d \n\n",e);

int k = locate_dul(l1,7);

printf("元素7的位置是: %d\n\n",k);

delete_dul(&l1,3,&e);

printf("刪除的第3個元素為: %d\n\n",e);

out_list(l1);

if(clear_dul(&l1))

printf("雙向鍊錶已清空!\n\n");

if(empty_dul(l1))

printf("雙向鍊錶為空!\n\n");

else

printf("雙向鍊錶非空!\n\n");

if(destroy_dul(&l1))

printf("鍊錶已被銷毀!\n\n");

return 0;

}status create_dulnode(dulinklist *l)

status init_dul(dulinklist *l)

}status empty_dul(dulinklist l)

int length_dul(dulinklist l)

return length;

}status insert_dul(dulinklist *l,int i,elemtype e)

dulinklist p = *l;//*l與p是同型別的指標,進行的是賦值操作,相當於p引用*l

dulinklist s;

int j = 1;

while(p->next!=null&&jnext;

++j;

} if(create_dulnode(&s))//建立結點成功

else

}else//建立結點失敗

return error;

return ok;

}//e返回鍊錶中第i個資料元素的值

status getelem_dul(dulinklist l,int i,elemtype *e)

*e = p->data;

return ok;

}//獲取元素的位置

int locate_dul(dulinklist l,elemtype e)

} return k;

}//刪除第i個元素的位置

status delete_dul(dulinklist *l,int i,elemtype *e)

dulinklist p = *l;//相當於p引用*l

建立雙向鍊錶

今天第一次寫部落格,所以說呢,請大家多多包含,首先就來個建立乙個雙向鍊錶吧!接下來還有向雙向鍊錶的插入和刪除的文章,請大家多多提意見啊!include include include struct dunode head int main p head next for i 0 i 5 i retu...

雙向迴圈鍊錶的建立及操作

專案名稱 雙向迴圈鍊錶的建立與基本操作 編譯環境 vc 2008 作者相關 最後修改 2019.6.19 學習目標 判空 求長 獲取元素位置 返回某個位置的元素 插入元素 刪除元素 清空鍊錶 銷毀鍊錶 注意事項 1.測試所有功能是否正常 include include define ok 1 def...

雙向鍊錶的操作

include using namespace std 列印選項 void printtheselect typedef struct dulnode dulnode,dulinklist 初始化雙向鍊錶 void initdlist dulinklist l cout 雙向鍊錶構造完畢 n 列印雙...