共同努力一起去大厂
发布时间:2025-06-24 20:47:54 作者:北方职教升学中心 阅读量:409
共同努力一起去大厂。
#include<stdio.h>#include<stdlib.h>#include <assert.h>typedef struct ListNode { int data; struct ListNode* prev, * next;}ListNode;ListNode* ListCreate(int x){ ListNode* newnode = (ListNode*)malloc(sizeof(ListNode)); if (newnode == NULL) { perror("malloc"); return NULL; } newnode->next = NULL; newnode->prev = NULL; newnode->data = x; return newnode;}ListNode* LInit(){ ListNode* head = ListCreate(-1); head->next = head; head->prev = head; return head;}void ListDestory(ListNode* phead){ assert(phead); ListNode* cur = phead->next, * prev = phead; while (prev != phead) { free(prev); prev = cur; cur = cur->next; }}void ListPrint(ListNode* phead){ assert(phead); ListNode* cur = phead->next; printf("哨兵位<=>"); while (cur != phead) { printf("%d<=>", cur->data); cur = cur->next; } printf("\n");}void ListPushBack(ListNode* phead, int x) { assert(phead); ListNode* newnode = ListCreate(x); ListNode* tail = phead->prev; tail->next = newnode; newnode->prev = tail; newnode->next = phead; phead->prev = newnode;}void ListPushFrount(ListNode* phead, int x){ assert(phead); ListNode* newnode = ListCreate(x); ListNode* cur = phead->next; phead->next = newnode; newnode->prev = phead; newnode->next = cur; cur->prev = newnode;}void ListPopBack(ListNode* phead){ assert(phead && phead->next != phead); ListNode* cur = phead->prev; cur->prev->next = phead; phead->prev = cur->prev; free(cur);}void ListPopFrount(ListNode* phead){ assert(phead && phead->next != phead); ListNode* cur = phead->next; phead->next = cur->next; cur->next->prev = phead; free(cur);}ListNode* ListFind(ListNode* phead, int x){ assert(phead); ListNode* cur = phead->next; while (cur->data != x) { cur = cur->next; } return cur;}void ListInsert(ListNode* pos, int x){ assert(pos); ListNode* newnode = ListCreate(x); ListNode* cur = pos->prev; cur->next = newnode; newnode->prev = cur; newnode->next = pos; pos->prev = newnode;}void ListErase(ListNode* pos){ assert(pos); ListNode* cur = pos->next; ListNode* prev = pos->prev; free(pos); cur->prev = prev; prev->next = cur;}void text1(){ ListNode* head = LInit(); ListPushBack(head, 1); ListPushBack(head, 2); ListPushBack(head, 3); ListPushBack(head, 4); ListPushBack(head, 5); ListPushFrount(head, 0); ListPrint(head); ListPopBack(head); ListPrint(head); ListPopBack(head); ListPrint(head); ListPopFrount(head); ListPrint(head); ListPopFrount(head); ListPrint(head); ListPushBack(head, 4); ListPushBack(head, 5); ListNode* cur = ListFind(head,3); ListPushFrount(head, 1); ListPushFrount(head, 0); printf("%d\n", cur->data); ListPrint(head); ListInsert(head, 10); ListPrint(head);}。
1.前言。
1.前言。
目录。
带头双向循环的链表非常好,接下来, |
逻辑上的连续性但物理上不一定连接。
C语言刷题 初级数据结构。
我们之前写过单链表,博客循环链表c;今日我主要为大家带来双向带头循环链表函数的功能与实现,与单链表相比,
动态顺序表,当空间不足时,我们将存储空间的顺序表和链表c;随机访问,插入或删除任何位置的元素,插入,缓存利用率,分析应用场景。
个人主页:点击我进入主页。
2.实现带头双向循环链表函数。
在任何位置插入或删除元。
3.总结。
3.总结。
欢迎大家点赞评论,收藏。
专栏分类C语言初阶 C语言程序设计————KTV C语言游戏 先进的C语言。