接上篇帶頭結點的單鏈表操作,不帶頭節點真的比帶頭結點的麻煩好多,主要是我自己指標指的有點暈,搞了這幾天的不帶頭結點的單鏈表,算是弄清楚指標的玩法了。。老樣子上**。
# include
"stdlib.h"
# include
"stdio.h"
# define ok 1
# define error 0
typedef
int status;
//自定義資料型別 相當於int僅用作裝逼
/** * 實現乙個不帶頭結點的單鏈表
*///節點類
typedef
struct lnodelnode;
//頭插法建立沒有頭結點的單鏈表
status headinitlist
(lnode *
*l,int a)
printf
("頭插法建立單鏈表成功\n");
return ok;
}//尾插法建立沒有頭結點的單鏈表
status tailinitlist
(lnode *
*l,int a)
printf
("尾插法建立單鏈表成功\n");
return ok;
}//初始化乙個沒有頭結點的單鏈表,返回乙個空的指標
status initlist
(lnode *
*l)//按位取元素
status getelem
(lnode *
*l ,
int n)
p = p->next;
}printf
("您要獲取的第%d個元素不存在,當前單鏈表共有%d個元素\n"
,n,i)
;return error;
}//查詢元素位置
status locateelem
(lnode *
*l,int e)
p = p->next;
}printf
("您要查詢的元素%d不存在\n"
,e);
return error;
}// 插入元素
status listinsert
(lnode *
*l,int n,
int e)
else
}while
(p)
p = p->next;
}printf
("插入元素%d到第%d位失敗,當前單鏈表共有%d個元素\n"
,e,n,i)
;return error;
}//刪除元素
status listdelete
(lnode *
*l,int n)
if(n == i)
while
(p)else
printf
("刪除第%d個元素成功\n"
,n);
return ok;
} p = p->next;
i++;}
printf
("你要刪除的第%d個元素不存在,單鏈表中共有%d個元素"
,n,i-1)
;return error;
}//遍歷單鏈表
status listprint
(lnode *
*l)return ok;
}//檢視表長
status listlength
(lnode *
*l)printf
("單鏈表長度為%d\n"
,i);
return ok;
}//清空單鏈表
status listclear
(lnode *
*l)printf
("單鏈表清空成功");
return ok;
}//判斷單鏈表是否為空
status listempty
(lnode *
*l)else
}//銷毀單鏈表
status listdestroy
(lnode *
*l)printf
("單鏈表銷毀成功");
return ok;
}int
main
(int argc,
char
const
*ar**)
;tailinitlist
(&l,a)
;listprint
(&l)
;listdestroy
(&l)
;// initlist(&l);
// listinsert(&l,1,1);
// listinsert(&l,2,2);
// listinsert(&l,3,2);
// listinsert(&l,2,4);
// listempty(&l);
// listinsert(&l,1,5);
// listinsert(&l,7,3);
// listprint(&l);
// listlength(&l);
// listempty(&l);
// listclear(&l);
// listempty(&l);
// listlength(&l);
// listinsert(&l,1,1);
// listprint(&l);
// listdestroy(&l);
}
不帶頭結點的單鏈表
slist.h pragma once typedef int sldatatype typedef struct slistnode slistnode 不帶頭節點的單鏈表 鍊錶初始化 void slistinit slistnode phead 建立新結點 slistnode slistnewn...
不帶頭結點的單鏈表
不帶頭結點的鍊錶的實現 核心是直接設定頭指標指向第乙個節點 要注意此時的l的位址可能會發生改變.同時還要注意一級指標和二級指標的區別.注意linklist l和linklist l的區別 和帶結點的單鏈表的操作相比較,要考慮到頭指標就是頭結點,在一些會改變頭結點的情況下要仔細考慮.include i...
不帶頭結點的單鏈表
單鏈表也可以不設頭結點,如圖212 所示。顯 然,基於這種結構的基本操作和帶有頭結點的線性鏈 表基本操作是不同的。bo2 8.cpp 是不帶頭結點的線 性鍊錶的基本操作。bo2 8.cpp 不帶頭結點的單鏈表 儲存結構由c2 2.h定義 的部分基本操作 9個 define destroylist c...