C/C++单链表的一些操作

来源:互联网 发布:java中级工程师就业班 编辑:程序博客网 时间:2024/06/03 20:27

LINK_List.h

#pragma once#include<iostream>#include<fstream>using namespace std;typedef struct Nodex{    char s_ch;    int s_x, s_y;    double s_f, s_h, s_g;    bool s_visit;    Nodex *s_pre;    Nodex(){        s_visit = 0;        s_pre = NULL;    }}Node;typedef struct ListNode{    Node element;    struct ListNode *next;}LinkList;void Init_list(LinkList *&L);bool List_empty(LinkList *L);void insert_List(LinkList *&L, int i, Node e);bool deleteOne_List(LinkList *&L, int i);int Length_List(LinkList *L);void display_List(LinkList *L);void destroy_List(LinkList *L);

LINK_List.cpp

#include"stdafx.h"#include"LINK_List.h"void Init_list(LinkList *&L){    L = (LinkList *)malloc(sizeof(LinkList));    L->next = nullptr;}bool List_empty(LinkList *L){    return(L->next == nullptr);}int Length_List(LinkList *L){    int n = 0;    LinkList *p = L;    while (p->next != nullptr)    {        n++;        p = p->next;    }    return n;}void insert_List(LinkList *&L, int i, Node e)//当插入的元素的位置大于链表长度时,直接插入到最后{    int j = 0;    LinkList*p = L,*s;    while (p->next != nullptr&&j<i-1)    {        p = p->next;        j++;    }    s = (LinkList *)malloc(sizeof(LinkList));    s->next = nullptr;    s->element = e;    s->next = p->next;    p->next = s;}bool deleteOne_List(LinkList *&L,int i)//第0个元素为表头,不能删除{    int j = 0;    LinkList*p = L, *q=L;    if (i == 0)return -1;    while (p->next != nullptr&&j<i)    {        q = p;        p = p->next;        j++;    }    q->next = p->next;    free(p);    return 0;}void display_List(LinkList *L){    LinkList*p = L->next;    while (p != nullptr)    {        cout << p->element.s_f << "  " << p->element.s_g << endl;        p = p->next;    }}void destroy_List(LinkList *L){    LinkList*pre = L, *p = L->next;    if (p != nullptr)    {        free(pre);        pre = p;        p = pre->next;    }    free(pre);}
// Linklist_Test.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include"LINK_list.h"LinkList *link_test;Node node_test;int main(){    int x;    Init_list(link_test);    for (int i = 0; i < 5; i++)    {        cin >> x;        node_test.s_f = x;        insert_List(link_test,10, node_test);    }    display_List(link_test);    node_test.s_f = 10;    insert_List(link_test, 1, node_test);    display_List(link_test);    deleteOne_List(link_test, 0);    display_List(link_test);    system("Pause");    return 0;}
0 0