数据结构

顺序表的表示

#define MAXSIZE 100
typedef struct{
   ElemType *elem;
   int    length;
}SqList;

 

 

1.带头结点和不带头结点的判空条件

first->next = NULL;//带头节点
first = NULL;   //不带头节点

2.在P后面插入

s->next = p->next;

p->next = s;

3.删除P后节点

q=p->next;
q->next = p->next;
delete q;

 

 

 链表

struct node
{
    int data;
    struct node* next;
}LNode, *LinkList;

LNode* head; 等价于struct node* head

LinkList head;等价于LNode* head; 

 

 

 

 

 

 

 

 

 

 

 

排序

 

直接插入排序

适合基本有序的序列

第一个数是有序,将无序的第一个数插入到有序中。无序的第一个数再次插入到有序中。

 

 

 

 

简单选择排序

从无序序列找到最小的数与无序序列第一个数进行交换。再从剩下的里面找到最小的数,时间花费在查找上了

 

 

 

 

 

 

 

 

 R[i]=R[0];   //基准元素归位

 

 

#include <iostream>

typedef struct node
{
    int data;
    struct node* left;
    struct node* right;
}Node;

void preorder(Node* node) {
    if (node != NULL) {
        std::cout << node->data;
        preorder(node->left);
        preorder(node->right);
    }
}

void inorder(Node* node) {
    if (node != NULL) {
        inorder(node->left);
        std::cout << node->data;
        inorder(node->right);

    }
}
int main()
{
    Node n1;
    Node n2;
    Node n3;
    Node n4;

    n1.data = 5;
    n2.data = 6;
    n3.data = 7;
    n4.data = 8;

    n1.left = &n2;
    n1.right = &n3;
    n2.left = &n4;
    n2.right = NULL;
    n2.right = NULL;
    n4.left = NULL;
    n4.right = NULL;

    preorder(&n1);
}

 

posted on 2023-04-23 20:16  ccxwyyjy  阅读(20)  评论(0)    收藏  举报