数据结构与算法上机考试复习笔记

数据结构与算法程序设计总结

by ldc

难度:北京大学数学科学学院数据结构与算法(B)

教材:《算法与数据结构——C语言描述》(第三版) 张乃孝,陈光,孙猛 编著

Chapter2 线性表

顺序表,单链表,双链表(可以向前也可以向后),循环链表(最后一个结点指向头结点),循环双链表

作业1:顺序表 错题: 多项式加法(不知道发生了啥事,看来还是越简单(sort)越容易对) 数组元素循环右移(这个nb的,要记得mod m)

注意:链表要带头才比较好用,否则删除第一个节点需要特殊的操作 单链表:

struct node{
    node * link;
    Datatype info;
};
typedef node * pnode;
pnode createNullList(){
    pnode pa=new(node);
    pa->link=NULL;
    return pa;
}
int isNull(pnode pa){
    if(pa->link==NULL){
        return 1;
    }
    else{
        return 0;
    }
}
void insert_back(pnode pa, Datatype tempinfo){
    pnode tempp=pa;
    while(tempp->link!=NULL){
        tempp=tempp->link;
    }
    tempp->link=createNullList();
    tempp->info=tempinfo;
}
int delete_back(pnode pa){
    pnode tempp=pa;
    if(isNull(pa)==1){
        return 2;//empty
    }
    while(tempp->link->link!=NULL){
        tempp=tempp->link;
    }
    delete(tempp->link->link);
    tempp->link=NULL;
    return 1;//删除成功
}作业3:注意一下斜杠的位置!‘\n’

Chapter3 字符串

核心算法:KMP(模式匹配算法) string和char的比较:string几乎没有什么缺点,但是有的时候做字符串截取的时候比较容易出错,一定要记牢字符串截取时的那些参数的含义 实现KMP:

#include <iostream>
using namespace std;
//KMP
struct str{
    int len;
    char word[1000];
};
str templ,target;
str input_(){
    str tempstr;
    tempstr.len=0;
    char temp;
    while((temp=cin.get())!=EOF){
        if(temp=='\n'){
            break;
        }
        if(temp!=' '){
            if(temp>='A'&&temp<='Z'){
                temp=temp-'A'+'a';
            }
            tempstr.word[tempstr.len]=temp;
            tempstr.len++;
        }
    }
    return tempstr;
}
int next_[1000]={0};
void calcuNext(){
    int i,j,k;
    next_[0]=-1;
    k=-1;
    i=0;
    while(i<templ.len-1){
        while(k>=0&&templ.word[i]!=templ.word[k]){
            k=
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值