-
大小: 803KB文件類型: .zip金幣: 2下載: 0 次發(fā)布日期: 2021-05-12
- 語言: 其他
- 標簽: 數(shù)據(jù)結(jié)構(gòu)??
資源簡介
雙向聊表的實現(xiàn)細節(jié)以及菜單顯示,對數(shù)據(jù)結(jié)構(gòu)的同學很有幫助,有注釋!大學必備源碼,可直接運行,c程序設(shè)計加數(shù)據(jù)結(jié)構(gòu)

代碼片段和文件信息
/**********************************雙向鏈表************************
*??雙向鏈表???????????????????????????????????????????????????????*
*??完成日期:2016.9.10????????????????????????????????????????????*
*??編譯環(huán)境:VC6.0????????????????????????????????????????????????*
*??說明:初始化時只能輸入0-9只有插入時可輸入int整數(shù)?????????????????*
******************************************************************/
#define?_CRT_SECURE_NO_DEPRECATE
#include?
#include?
#include?
#include?
//輸出菜單menu函數(shù)
void?printmenu()
{
printf(“\n1.建立雙向鏈表(初始化)\n2.打印雙向鏈表\n3.逆序打印雙向鏈表\n“);
printf(“4.求鏈表的長度\n5.判斷鏈表是否為空\n6.清空鏈表\n“);
printf(“7.插入元素\n8.刪除元素\n9.刪除鏈表\n0.退出\n“);
}
//定義結(jié)點結(jié)構(gòu),雙向鏈表結(jié)點
typedef?struct?DuLnode
{
int?data;
struct?DuLnode?*prior;???//前驅(qū)指針
struct?DuLnode?*next;????//后繼指針
}DuLnode*DulinkList;
//初始化雙向鏈表
void?InitDlist(DulinkList?&L)
{
int?x;???//定義成char型是用于輸入‘q‘時可以退出,其實定義成int也能退出
DulinkList?p?q;
L?=?(DulinkList)malloc(sizeof(DuLnode));
L->next?=?NULL;
L->prior?=?NULL;
p?=?L;
printf(“輸入雙向鏈表的元素,每輸入一個后按回車,輸入0表示結(jié)束.\n“);
fflush(stdin);
scanf(“%d“&x);
while?(x!=0?)
{
q?=?(DulinkList)malloc(sizeof(DuLnode));
q->data?=?x?;???????//數(shù)字字符的ASCLL碼減去48得到該數(shù)字
q->next?=NULL?;
q->prior?=?p;
p->next?=?q;
p?=?q;
fflush(stdin);
scanf(“%d“?&x);
}
if?(x?==0)??printf(“雙向鏈表構(gòu)建完畢!\n“);
}
//輸出鏈表函數(shù)
void?printDList(DulinkList?&L)
{
DulinkList?p;
if?(L?==?NULL)
{
printf(“鏈表不存在,請先初始化!\n“);
}
else?if(L->next?==?NULL)
{
p?=?L->next;????????//避免p為野指針,賦值為NULL
printf(“鏈表中沒有結(jié)點,空!\n“);
}
else
{
p?=?L->next;
while?(p)
{
printf(“%d?“?p->data);
p?=?p->next;
}
}
}
//逆序打印雙向鏈表
void?printDListFromLast(DulinkList?&L)
{
DulinkList?p;
if?(L?==?NULL)
{
printf(“鏈表不存在,請先初始化!\n“);
}
else?if?(L->next?==?NULL)
{
p?=?L->next;
printf(“鏈表中沒有結(jié)點,空!\n“);
}
else
{???
p?=?L->next;
while?(p->next)
{
p?=?p->next;
}
while?(p->prior)
{
printf(“%d?“?p->data);
p?=?p->prior;
}
}
}
//求鏈表長度函數(shù)
int?LenghtDList(DulinkList?L)
{
int?n=0;
DulinkList?p;
if?(L?==?NULL)
{
printf(“鏈表不存在,請先建立!\n“);
}
else
{
p?=?L->next;
while?(p)
{
n++;
p?=?p->next;
}
}
?????
return?n;
}
void?EmptyDuList(DulinkList?L)
{
if?(L?==?NULL)
{
printf(“鏈表不存在,請先初始化!\n“);
}
else?if?(L->next?==?NULL)
{
?????????printf(“鏈表為空!\n“);
}
else
{
printf(“鏈表不為空!\n“);
}
}
//把雙向鏈表清空
void?ClearDuList(DulinkList?&L)
{
if?(L?==?NULL)
{
printf(“鏈表不存在,請先初始化!\n“);
}
else?if?(L->next?==?NULL)
{
printf(“鏈表本身為空!\n“);
}
else
{
DulinkList?p?q;?
p?=?q?=?L->next;????//p、q指向第一個元素
L->next?=?NULL;
while?(p)??????????//逐漸釋放元素所占內(nèi)存
{
p?=?p->next;
free(q);
q?=?p;
}
}
}
void?DelDList(DulinkList?&L)
{
ClearDuList(L);
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2016-09-12?17:01??雙向鏈表\
?????目錄???????????0??2016-09-12?16:42??雙向鏈表\Debug\
?????文件???????60416??2016-09-12?16:42??雙向鏈表\Debug\vc120.idb
?????文件???????86016??2016-09-12?16:42??雙向鏈表\Debug\vc120.pdb
?????文件???????36352??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.exe
?????文件??????255976??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.ilk
?????文件????????1635??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.log
?????文件???????26767??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.obj
?????文件??????502784??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.pdb
?????目錄???????????0??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\
?????文件????????4284??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\CL.read.1.tlog
?????文件????????1048??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\CL.write.1.tlog
?????文件????????1410??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\cl.command.1.tlog
?????文件????????1308??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\li
?????文件????????2482??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\li
?????文件?????????612??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\li
?????文件?????????201??2016-09-12?16:42??雙向鏈表\Debug\雙向鏈表.tlog\雙向鏈表.lastbuildstate
?????文件????????6448??2016-09-12?16:42??雙向鏈表\雙向鏈表.cpp
?????文件?????2621440??2016-09-12?17:01??雙向鏈表\雙向鏈表.sdf
?????文件?????????969??2016-09-10?18:34??雙向鏈表\雙向鏈表.sln
?????文件???????23040??2016-09-12?17:01??雙向鏈表\雙向鏈表.v12.suo
?????文件????????4097??2016-09-12?16:41??雙向鏈表\雙向鏈表.vcxproj
?????文件?????????953??2016-09-12?16:41??雙向鏈表\雙向鏈表.vcxproj.filters
評論
共有 條評論