数据结构
码路编
这个作者很懒,什么都没留下…
展开
-
数据结构之链表地址
今晚看了看链表的地址传递,发现自己忘了不少,而其中的许多的东西在今后的学习中或许还有很大的用途!这里只对链表的简单的初始化,头插法以及打印输出做出简单的说明,其他的举一反三! 代码: #include<stdio.h>#include<stdlib.h>typedef struct Node{ int data; struct Node *next;}Nod原创 2016-03-31 01:07:42 · 3587 阅读 · 1 评论 -
数据结构之线性表
//This piece of code contains all the needs of the data structure, the first chapter master function//InitLiner, display,insert, findValue,findPosition,deleteValue,deletePosition,merege.// Created by原创 2016-04-01 12:53:39 · 397 阅读 · 0 评论 -
数据结构之链表
//This piece of code contains all the needs of the data structure, the first chapter master function//InitList,createFromhead,createFromtail display,insert, findValue,findPosition,deleteValue,deletePo原创 2016-04-01 12:57:53 · 392 阅读 · 0 评论 -
循环队列
#include <stdio.h>#include <stdlib.h>#define N 5typedef struct Node{ int elem[N]; int front; int rear;}SeqQueue;int initQueue(SeqQueue *Q);//初始化循环队列int enterQueue(SeqQueue *Q);//循环队列入队原创 2016-04-20 23:01:47 · 452 阅读 · 0 评论 -
链队
#include <stdio.h>#include <stdlib.h>typedef struct Node{ int data; struct Node *next;}LinkQueueNode;typedef struct { LinkQueueNode *front; LinkQueueNode *rear;}LinkQueue;int initQ原创 2016-04-20 20:47:09 · 369 阅读 · 5 评论 -
栈之括号配对
题目描述: 设表达式中包含三种括号:圆括号,方括号和花括号,它们可以互相嵌套,如([{}])和{{()[]}}等均为正确的格式,而{[(])}和{(}均为不正确的格式。 算法思想:检验算法中可设置一个栈每读入一个括号,若是左括号,则直接入栈,等待相匹配的同类右括号若读入的是右括号,且与当前栈顶的左括号同类型,则二者匹配,将栈顶的左括号出栈,否则属于不合法的情况。另外,如果输入的序列已读完原创 2016-04-18 20:06:12 · 626 阅读 · 0 评论 -
链表之带头结点的单链表就地逆置
原理如图: int reveseList(Linklist L){ Node *p = L->next;//p为原链表当前处理的节点 Node *q = NULL;//q指针保留当前处理节点的下一个节点 L->next = NULL;//将原链表置为空 while (p!=NULL)//当原链表还未处理完 { q = p->next;//q指原创 2016-04-09 23:37:22 · 1491 阅读 · 2 评论 -
链表之实现对二进制数的加一操作
建链表:二进制数可用带头结点的单链表存储,第一个节点存储二进制数的最高位,依次存储,最后一个节点存储位二进制数的最低位。二进制数的加法规则:实现二进制数加1运算,方向从最低位往高位找到第一个为0的位,从该位开始,对后面所有地位进行求反运算。链表实现二进制加1操作时,从高位往低位与运算方向正好相反,从第一个节点开始找,找出最后一个值域为0的节点,把该节点值域赋值为1,其后所有节点的值域都为0。若原创 2016-04-10 00:19:53 · 1582 阅读 · 0 评论 -
链表之交换奇偶数,实现左边为奇数,右边为偶数
void sort(LinkList L) //实现元素分类,使链表左侧为奇数,右侧为偶数{ Node *p, *q = L->next;//q从头结点后面那个数据开始 p = L->next->next;//p从q后面那个节点开始,因为对头结点后面那个数无论它是奇还是偶,位置不变 while (p != NULL)//不是p->next!=NULL {原创 2016-04-18 17:21:07 · 946 阅读 · 0 评论 -
链栈
#include<stdio.h>#include<stdlib.h>typedef struct stack{ int data; struct stack *next;}LinkNode ,*LinkStack;int initStack(LinkStack *S);//初始化int push(LinkStack top);//进栈int pop(LinkStack top原创 2016-04-15 18:09:48 · 294 阅读 · 0 评论 -
顺序栈
#include<stdio.h>#include<stdlib.h>#define Max 50//栈中存放的最大元素个数typedef struct { int elem[Max];//用来存放栈中元素的一维数组 int top;//用来存放栈顶元素的下标,top为-1时,表示空栈}Seqstack;int initStack(Seqstack *S);//栈的初始化int原创 2016-04-11 22:01:31 · 333 阅读 · 0 评论 -
双端栈
#include<stdio.h>#include<stdlib.h>#define N 5typedef struct{ int elem[N]; int top[2];}DqStack;int initStack(DqStack *L); //初始化int pushStack(DqStack *L);//进栈int popStack(DqStack *L);//出栈int原创 2016-04-14 23:07:45 · 665 阅读 · 0 评论 -
链表之两个多项式相加
//This code is to calculate two main polynomial addition// Created by Liuyao in 2016.// Copyright (c) 2016 Liuyao. All rights reserved.#include<stdio.h>#include<stdlib.h>typedef struct polynode{原创 2016-04-07 16:12:10 · 834 阅读 · 0 评论 -
栈之计算表达式值
算法思想:规定运算符的优先级表设置两个栈,运算数栈,运算符栈。输入一个表达式,自左向右扫描,进行如下处理:若遇到运算数则进栈,若遇到运算符,则与运算符栈中的栈顶元素进行优先级比较。1.如果当前运算符优先级大于栈顶元素的优先级,则当前运算符进栈。2.如果当前运算符的优先级小于等于栈顶元素的优先级,则运算符栈退栈一次,运算数栈退栈两次,得到运算数a和运算数b和运算符op,执行运算后将得到的结果压进原创 2016-04-26 18:40:37 · 691 阅读 · 4 评论