c语言单向链表经典,C语言基础 - 实现单向链表

写在前面

弄了下个人站...防止内容再次被锁定...所有东西都在这里面

welcome~

个人博客

回归C基础

实现一个单向链表,并有逆序功能 (大学数据结构经常是这么入门的)

//定义单链表结构体

typedef struct Node{

int value;

struct Node *next;

}Node;

//创建链表

Node* createNode(int value,Node *next){

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

node->value = value;

node->next = next;

return node;

}

//打印链表

void printList(Node *list){

for (Node *node = list; node != NULL; node = node->next) {

printf("current node value %d \n",node->value);

}

}

//反转链表

Node* reverse(Node *listNode){

Node *reList = NULL;

Node *tmp;

while (listNode != NULL) {

tmp = malloc(sizeof(Node));

//逆转之后,原链表的头结点就是新链表的尾结点

//如果不是第一个结点,则本次产生的新结点是上次结点的前一个

if (reList == NULL) {

tmp->next = NULL;

}else{

tmp->next = reList;

}

tmp->value = listNode->value;

reList = tmp;

listNode = listNode->next;

}

//原链表的最后一个结点是新链表的头结点

return reList;

}

//销毁

void destroyList(Node *list){

Node *tmp;

while (list != NULL) {

tmp = list;

list = list->next;

free(tmp);

}

printf("链表销毁\n");

}

测试打印结果

int main(int argc, const char * argv[]) {

@autoreleasepool {

Node *first = createNode(0, NULL);

Node *list = first;

first->next = createNode(2, NULL);

first = first->next;

first->next = createNode(3, NULL);

first = first->next;

first->next = createNode(4, NULL);

first = first->next;

first->next = createNode(7, NULL);

first = first->next;

printf("源数据:\n");

printList(list);

printf("反转后数据:\n");

list = reverse(list);

printList(list);

destroyList(list);

}

return 0;

}

结果:

52217841f9f5

c-lianbiao.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值