用c语言写一个简单的链表,具体要怎么用代码实现

用c语言写一个简单的链表,具体要怎么用代码实现,第1张

可以用结构体和指针来实现

定义:

定义一个单个元素弯拆的指闹孙结构

typedef struct Chain_tag { // 这里用typedef来定义唯链,方便使用int data// 这里的数据可以是任意类型//其他数据struct Chain_tag *prev, *next// 由于Chain为不完全类型,故只能用指针的方式声明} Chain

使用:

用单个结构体的指针作为head

#include <malloc.h>//Chain的定义写在这里 Chain *alloc_single_chain(int data /*, (其他参数)*/){Chain *tmptmp = malloc(sizeof(Chain)) tmp.data = data //...其余数据初始化tmp.prev = tmp.next = NULL// 将前后指针置为NULL return tmp} voiddispose_chain(Chain *target) //其实这里功能简单,用宏实现也可以{free(target) return} int main(){Chain *head Chain *poshead = alloc_single_chain(10)//初始化起始结点head->next = alloc_single_chain(11)//同理。。下一个结点 for (pos = headpospos = pos->next)//清理垃圾好习惯{ dispose_chain(pos) } return 0}

可以用结构体和指针来实现

定义:

定义一个单个元素的结构

typedef struct Chain_tag { // 这里用typedef来定义,方便使用

    int data // 这里的数据可以是任意类型

    //其他数据

    struct Chain_tag *prev, *next// 由于Chain为不完全类型,故只能用指针的方式声明

} Chain

使用:

用单个结构体的指针作为head

#include <malloc.h>

//Chain的定义写在这里

Chain *

alloc_single_chain(int data /*, (其他参数)*/)

{

    Chain *tmp

    

    tmp = malloc(sizeof(Chain))

    tmp.data = data

    //...其余数据初始化

    tmp.prev = tmp.next = NULL // 将前后指针置为NULL

   竖桐耐 

 余春   return tmp

}

void

dispose_chain(Chain *target) //其实这里功能简单,用宏实现也可以

{

    free(target)

    return

}

int main()

{

    Chain *head

    Chain *pos

    

    head = alloc_single_chain(10)//初始化起始结点

    head->next 轮型= alloc_single_chain(11)//同理。。下一个结点

    

    for (pos = head pos pos = pos->next)//清理垃圾好习惯

    {

       dispose_chain(pos)

    }

    

    return 0

}

这里有几点要注意:

由于链表用指针来实现,故不要忘记分配内存

垃圾清理时一定要从起始结点开始依次向后释放,以防内存泄漏

这嫌念是个很简单的链表创建和输出

#include<stdio.h>

#include<stdlib.h>

typedef struct linkednode

{

char data

struct linkednode *next

}node,*link_list//链表节点的结构及重命名

link_list creat()//创建一个逗判链表返回类型是链表的首地址

{

link_list L

node *p1,*p2

char data

L=(node*)malloc(sizeof(node))//开辟存储空间

p2=L

while((data=getchar())!='\n')//输入回车键时结束输入

{

p1=(node*)malloc(sizeof(node))

p1->data=data

p2->next=p1

p2=p1

}

p2->山者改next=NULL

return L

}

void print(link_list L)//把链表输出

{

node *p

p=L->next

while(p!=NULL)

{

printf("%c",p->data)

p=p->next

}

printf("\n")

}

void main()

{

link_list L=NULL

char x

printf("请输入链表节点:\n")

L=creat()

print(L)

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12452217.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存