day3

发布时间 2023-05-23 22:53:29作者: kukusuyi

哭死。

总算在代码上实现了双向链表。

从上个礼拜二开始到现在,我已经算是在线性表这一节上卡了整整一个礼拜了。难受。

#include<stdio.h>
#include<stdlib.h>

//双向链表的实现:
struct Node{
    int num;
    struct Node* Last;
    struct Node* Next;
};
//创建链表
struct Node* createList(){
    struct Node* headlist = (struct Node*)malloc(sizeof(struct Node));
    //创建动态变量
    //初始化链表表头
    headlist->num = -1;
    headlist->Next = NULL;
    return headlist;    
}
struct Node* newList(int n){
    //节点创建
    struct Node* newlist = (struct Node*)malloc(sizeof(struct Node));
    newlist->Last =NULL;
    newlist->Next = NULL;
    newlist->num = n;
    return newlist;
}

void intList(struct Node* list,int num ,int length){
    for(int a = 0; a < length;a++){
        if(list->Next==NULL){
            printf("操作错误");
            return 0;
        }
        list = list->Next;
    }
    struct Node* intlist = newList(num);
    intlist->Next = list ->Next;
    intlist->Last = list;
    list->Next = intlist;
}


//打印列表
void printList(struct Node* list){
    struct Node* pMove = list->Next;
    while (pMove)
    {
        printf("%d\n",pMove->num);
        pMove = pMove -> Next;
    }
    
}

//删除操作
void deleteList(struct Node* list,int length){
    // 
    for(int a = 0;a<length;a++){
        list = list->Next;
    }
    struct Node* deletelist = list->Next;
    list->Next = deletelist->Next;
    if(deletelist->Next!=NULL)
    deletelist->Next->Last = list;
    free(deletelist);
}


int main (){
    struct Node* List1 = createList();
    intList(List1,1,0);
    intList(List1,2,1);
    intList(List1,3,1);
    printList(List1);
    deleteList(List1,2);
    printList(List1);
    return 0;
}

真的心态能被崩掉。在第三十行犯了个错误把==写成了=,找这个错误改了一遍又一遍的代码。编译器的报错也不准确。直到我翻出了前几天写的单向链表一个函数一个函数核对才找到了错误。