![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
weixin_48394650
这个作者很懒,什么都没留下…
展开
-
线性结构之顺序栈、链栈、循环顺序队、链队(C语言实现)
1、顺序栈/* 顺序栈,就是用一组地址连续的存储单元来存放栈元素,然后用一个栈结构去维护一个栈。在C中,可用动态开辟的数组去表示,维护的栈结构需要有一个栈底和一个栈顶指针。因为开辟一个数组需要事先知道它的大小,所以栈结构里就必须还有一个整型变量来表示当前栈的存储容量(stacksize)。实现如下:*/#include <stdio.h>#include <windows.h>/* 用顺序表实现一个顺序栈*///定义一个顺序栈#define MAXSIZ原创 2021-03-10 21:55:39 · 281 阅读 · 0 评论 -
线性表的应用(有序表的合并、多项式运算、稀疏多项式运算、图书信息管理)
1、有序表的合并(链表实现)# include<stdio.h># include<malloc.h> # include<stdlib.h># define min(a,b)(a<b?a:b)typedef struct Node{ int data; struct Node * pNext;}NODE, * PNODE;PNODE createList();PNODE createList1(int len);void listMerg原创 2021-03-03 20:21:12 · 150 阅读 · 1 评论 -
单链表、循环单链表和双向循环链表的时间效率比较
总结:以空间换取时间。原创 2021-03-01 20:29:08 · 944 阅读 · 0 评论 -
双向链表的基本操作(删除、插入)
//首先使得指针p指到所要删除元素的位置PNODE findPos(PNODE pHead, int pos){ int i = 1; //计数器 PNODE p = pHead->pNext; while (NULL !=p && i < pos) //pos:所需处理节点的位置 { p = p->pNext; ++i; } if (i > pos || NULL == p) return p; } return p;}//进行.原创 2021-03-01 16:59:15 · 381 阅读 · 0 评论 -
两个带有尾指针的单循环链表的合并
PNODE mergeList(PNODE Ta PNODE Tb){ PNODE p = Ta->pNext; Ta->pNext = Tb->pNext->pNext; free(Tb->pNext); Tb->pNext = p;}原创 2021-03-01 16:16:30 · 1055 阅读 · 0 评论 -
单链表的基本操作(2021-02-27)
链表的基本操作(节点的插入、删除等)核心:找到所需处理节点的上一个节点的位置。代码实现int i = 1; //计数器PNODE p = pHead->pNext;while (NULL !=p && i < pos-1) //pos:所需处理节点的位置,pos-1:前一个节点的位置{ p = p->pNext; ++i;}if (i > pos-1 || NULL == p) return false;时间一长,再写代码便会出现很多小错原创 2021-02-27 11:02:57 · 104 阅读 · 1 评论