不帶頭結點的C語言單鏈表操作,頭插法及尾插法

2021-10-25 19:56:48 字數 2796 閱讀 1797

接上篇帶頭結點的單鏈表操作,不帶頭節點真的比帶頭結點的麻煩好多,主要是我自己指標指的有點暈,搞了這幾天的不帶頭結點的單鏈表,算是弄清楚指標的玩法了。。老樣子上**。

# 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...