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;
}