C语言怎么实现单链表的基本功能

技术C语言怎么实现单链表的基本功能本篇内容主要讲解“C语言怎么实现单链表的基本功能”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C语言怎么实现单链表的基本功能”吧!1.首先简

本文主要讲解“如何用C语言实现单链表的基本功能”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖学习“如何用C语言实现单链表的基本功能”!

1.首先,简单了解链表:的概念。

C语言怎么实现单链表的基本功能

需要注意的是,链表是一个由结构实现的线性表,只能从前到后,不能从后到前(因为next只保存下一个节点的地址)。当实现单一链表的操作时,需要使用指针来操作。很简单,笔记写得很详细。欢迎指正,哈哈哈~再写就太可惜了。

2.代码显示:

# includestdio.h

#includeassert.h

# includestdlib.h

typedefstructlinklist{

intdata

structlinklist * next

}节点;

//目录

//1.动态应用节点

node * Creatnode(intx);

//2.单链表的尾部插入

voidPushBack(节点**plist,int x);

//3.打印单个链表

空隙打印列表(节点* * plist);

//4.结束删除单个链表

voidPopback(节点* * plist);

//5.单一链表的标题

voidPushFront(节点**plist,int x);

//6.单个链接列表的标题删除

voidPopFrount(节点* * plist);

//7.单个链表的查找

node*Findpos(node*plist,intx);

//8.在位置后的单个链表中插入X

voidInsertlinstafter(节点*pos,int x);

//9.单链表在位置后删除元素

voidPopPosAfter(节点* pos);

//10.销毁单一链表

voidDestorylist(节点* * plist);

//1.动态应用节点

节点* Creatnode(intx){ 0

node * t=(node *)malloc(sizeof(node));

if(t==NULL){ 0

assert(0);

returnNULL

}

else{

t-next=空;

t-数据=x;

returnt

}

}

//2.单链表的尾部插入

无效推回(节点**plist,intx){ 0

assert(plist);

if(* plist==NULL){ 0

* plist=Creatnode(x);

}

else{

节点* p=* plist

while(p-next){ 0

p=p-next;

}

p-next=Creatnode(x);

}

}

//3.打印单个链表

空隙打印列表(节点* * plist){ 0

assert(plist);

节点* p=* plist

while(p){ 0

printf(“% d”,p-data);

p=p-next;

}

}

//4.结束删除单个链表

voidPopback(节点* * plist){ 0

assert(plist);

if(* plist==NULL){ 0

returnNULL

}

节点* p=* plist

节点* q=空;

while(p-next){ 0

q=p;

p=p-next;

}

q-next=NUL

L;
free(p);
}
//5.单链表的头插
void PushFront(node** plist, int x) {
assert(plist);
node* t = Creatnode(x);
if (NULL == *plist) {
*plist = t;
}
else {
t->next = *plist;
*plist = t;
}
}
//6.单链表的头删
void PopFrount(node** plist) {
assert(plist);
if (plist == NULL) {
return NULL;
}
else {
node* p = *plist;
*plist = p->next;
free(p);
}
}
//7.单链表的查找
node* Findpos(node* plist, int x) {
node* cur = plist;
while (cur) {
if (cur->data == x) {
return cur;
}
cur = cur->next;
}
return NULL;
}
//8.单链表在pos位置之后插入x
void Insertlinstafter(node* pos, int x) {
assert(pos);
if (NULL == pos) {
return ;
}
node* t = Creatnode(x);
t->next = pos->next;
pos->next = t;
}
//9.单链表删除pos位置之后的元素
void PopPosAfter(node* pos) {
assert(pos);
if (pos->next == NULL) {
return;
}
else{
node* p = pos->next;
pos->next = p->next;
free(p);
}
}
//10.单链表的销毁
void Destorylist(node** plist) {
assert(plist);
node* p = *plist;
while (p) {
*plist = p->next;
free(p);
p = *plist;
}
*plist = NULL;
}
 
void test1() {
node* plist=NULL;//创建头指针
PushBack(&plist, 1);//尾插元素
PushBack(&plist, 2);
PushBack(&plist, 3);
PushBack(&plist, 4);
PushBack(&plist, 5);
Printlist(&plist);//打印链表元素  1 2 3 4 5 
printf("\n");
Popback(&plist); //尾删元素      
PushFront(&plist, 0);//首插元素0    
Printlist(&plist);//打印链表   0 1 2 3 4
printf("\n");
PopFrount(&plist);//首删元素0  
Printlist(&plist);//打印链表   1 2 3 4
printf("\n");
Findpos(plist,1);//寻找链表中1的地址,不方便演示,下面会演示
Insertlinstafter(Findpos(plist, 4), 5);//在4后面插入5,用到上面的Findpos函数
Printlist(&plist);//打印链表   1 2 3 4 5
printf("\n");
PopPosAfter(Findpos(plist, 4));//删除指定位置后面的元素(删除4后面的5)
Printlist(&plist);//打印链表    1 2 3 4
printf("\n");
Destorylist(&plist);//销毁链表
Printlist(&plist);//打印链表
}
void test() {
test1();
}
int main() {
test();
return 0;
}

3.测试结果:

a.先创建了头指针plist

b.尾插1 2 3 4 5

c. 尾删元素5

d.首插元素0

e.首删元素0

f.在元素4 后面插入5

g.删除4元素后面的5

h.销毁链表

C语言怎么实现单链表的基本功能

到此,相信大家对“C语言怎么实现单链表的基本功能”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/115596.html

(0)

相关推荐

  • 年轻程序员去大公司好还是小公司好

    技术年轻程序员去大公司好还是小公司好 年轻程序员去大公司好还是小公司好程序员去大公司好还是小公司好其实不论是不是程序员,人们都会有这样的疑问,我的观点是各有特点吧。程序员去大公司好还是小公司好其实不论是

    礼包 2021年11月4日
  • 渗的组词,2021年琥珀课文的生字组词

    技术渗的组词,2021年琥珀课文的生字组词2021年《琥珀》课文的生字组词渗的组词:怒(nù),怒火、怒吼、怒骂、怒斥、发怒、怒气冲冲、怒发冲冠、怒目而视。吼(hǒu),吼叫、怒吼、一声吼。
    脂(zhī),油脂、胭脂、脂

    生活 2021年10月24日
  • 女作家排行榜,当代女作家你最喜欢谁的作品

    技术女作家排行榜,当代女作家你最喜欢谁的作品文无第一武无第二女作家排行榜,说最喜欢谁真的不好说。
    推荐下林奕含吧,前段时间因为XX案件,她的作品《房思琪的初恋乐园》又一次火了起来。
    “我宁愿我是一个媚俗的人,我宁愿无知,

    生活 2021年10月30日
  • Android中如何进行数据解析及读取

    技术Android中如何进行数据解析及读取本篇文章为大家展示了Android中如何进行数据解析及读取,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。数据解析及读取网络传输中数据的组

    攻略 2021年11月26日
  • 知足知不足有为有不为什么意思,有为有不为,知足知不足谁写的

    技术知足知不足有为有不为什么意思,有为有不为,知足知不足谁写的冰心老人说过的话,教育子女为人处事的一段道理.大意是知足知不足有为有不为什么意思:正确的事情不论大小都要去做,错误的事情再小也不要去做;要学会知足,知足方能长

    生活 2021年10月27日
  • Java中如何把二叉搜索树转换为累加树

    技术Java中如何把二叉搜索树转换为累加树这篇文章主要介绍了Java中如何把二叉搜索树转换为累加树,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、题目给

    攻略 2021年11月2日