![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C语言
文章平均质量分 50
前程韶光
学生
展开
-
栈的应用:表达式求值问题
1基本思路任何一个表达式都是由操作数(operand)、运算符(operator)和界限符(delimiter)组成,其中,操作数可以是常数也可以是被说明为变量或常量的标识符;运算符可以分为算术运算符、关系运算符和逻辑运算符等三类;基本界限符有左右括弧和表达式结束符等 。为了叙述简洁,在此仅限于讨论只含二元运算符的算术表达式。由于算术运算的规则是:先乘除后加减、先左后右和先括弧内后括弧外,则对表达式进行运算不能按其中运算符出现的先后次序进行。由于算术运算的规则是:先乘除后加减、先左后右和先括弧内后括弧原创 2021-04-03 11:22:06 · 1342 阅读 · 0 评论 -
链表实现一元多项式的相加
代码如下:#include<stdio.h>#include<stdlib.h>struct Polynomial//结构体的定义{ float coef;//系数 int expn;//指数 Polynomial* next;};void print(Polynomial* L){ Polynomial* Q;//此处最好新建指针,防止无意中对L的位置做出改变 Q = L; while (Q != NULL) { if (Q->coef !=原创 2021-03-21 17:51:47 · 1739 阅读 · 0 评论 -
静态链表的基本操作
静态链表的基本操作包括建立与输出,删除与插入操作与单链表类似,麻烦的点在于每次遍历都要建立两个临时变量,还要特殊判断第一个节点,并将删除后的节点再次初始化其游标的值,就不写了#include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; int cur;}Node;#define MAXSIZE 1000typedef Node staticlist[MAXSIZE];void initlist(原创 2021-03-18 15:23:43 · 248 阅读 · 0 评论 -
合并两个非递减排列类的顺序线性表
伪c语言如下(函数)根据题目就知道显然使用链表更加简单(就是简单的连线)思想:以L线性表作为基准,遍历Q线性表,满足条件及插入即可,需要注意,每次插入都要记住插入点的位置(n),下次插入必定在此处之后,每找到一个点就开始从此处开始将L的元素向后移一个位置,经多次调试才发现插入点为最后一个位置是要做特殊判断(此时不需要移动L中的元素)void mergelist(sqlist &L){sqlist Q;int i;int e;int l, j, k;int j1,n;printf(原创 2021-03-15 23:20:55 · 1275 阅读 · 0 评论 -
. 已知一单链表中的数据元素含有三个字符(即:字母字符、数字字符和其它字符)。试编写 算法,构造三个循环链表,使每个循环链表中只含同一类的字符,且利用原表中的结点空间 作为这三个表的结点空间
两种思路:1,建立三个指针,分别指向字母,数字和其他字符,遍历链表,将符合条件的链入即可2,将三种字符分别存在现有链表的三个位置,便利两遍(移动两遍,第一遍将一种类型取出,依次与链表前面的部分交换位置即可总体来说,都是两种不难理解,不难想到的思路,代码略(滑稽)...原创 2021-03-13 23:47:18 · 1440 阅读 · 3 评论 -
单链表的详细操作
#include<stdio.h>#include<stdlib.h>struct ListNode {int data;ListNode* next;};ListNode* insert( ListNode * L, int l, int e,int* len);ListNode* newlist(ListNode* L, int* len);void print(ListNode L);bool locationright(int i, int e);List原创 2021-03-13 17:17:28 · 106 阅读 · 2 评论 -
链表的头插法和尾插法
头插法:readlisthead尾插法:readlisttail#include<stdio.h>#include<stdlib.h>struct ListNode {int data;ListNode* next;};ListNode* readlisthead(){struct ListNode head,tail,p;head = (struct ListNode)(malloc(sizeof(ListNode)));head->next = NU原创 2021-03-13 13:15:32 · 771 阅读 · 0 评论 -
接上篇(顺序表操作全部)
#include<stdio.h>#include<stdlib.h>typedef struct{int* i;int length;}sqlist;void newm();bool newsqlist(sqlist& L);bool Insert(sqlist& L, int i, int j);bool Get(sqlist &L, int i, int& e);bool deletem(sqlist& L, int原创 2021-03-12 15:42:45 · 69 阅读 · 0 评论 -
线性表中顺序表的基本操作(创建,插入,删除,输出)和单链表的基本操作(创建,删除,输出)
单链表:(使用了引用,要在c++上运行)#include<stdio.h>#include<stdlib.h>#define MAXSIZE 100//最大长度typedef struct//创建{int* i;int length;}sqlist;bool newsqlist(sqlist& L){L.i = (int*)(malloc)(sizeof(int[MAXSIZE]));//申请空间if (!L.i){return false;}原创 2021-03-11 17:05:09 · 725 阅读 · 0 评论 -
PTA函数最后一题:链表删除节点
链表删除节点(第一次写,打字都有点不太利索)上代码:#include <stdio.h>#include <stdlib.h>struct ListNode {//定义链表int data;struct ListNode* next;};struct ListNode* readlist();struct ListNode* deletem(struct ListNode* L, int m);void printlist(struct ListNode* L)原创 2020-12-18 17:11:51 · 694 阅读 · 1 评论