代码如下
#include<iostream>
#include<stdio.h>
#include <malloc.h>
#include <stdlib.h>
using namespace std;
//sizeof(DLink)会报异常,sizeof(DNode)就不会
typedef struct DNode {
DNode * provide = NULL;
DNode * next = NULL;
int data = -1;
int length = 0;
}DNode,*DLink;
bool ebbDNode(DLink p1 ,int index) {
DLink p2 = p1;
for (int i = 0; i < index+1 ; i++)
{
p2 = p2->next;
}
p2->provide->next = p2->next;
p2->next->provide = p2->provide;
p2->length--;
return true;
}
bool addDNode(DLink p1, int index, int num) {
DLink p2 = p1;
DLink newNode = (DLink)malloc(sizeof(DNode));
for (int i = 0; i < index + 1; i++)
{
p2 = p2->next;
}
p2->next->provide = newNode;
newNode->next = p2->next;
p2->next = newNode;
newNode->data = num;
p1->length++;
return true;
}
int main() {
//建表
DLink L1 = (DLink)malloc(sizeof(DNode));
//L1->data = -1;
DLink p;
DLink r1;
r1 = L1;
p = L1;
for (int i = 0; i < 10; i++)
{
DLink r = (DLink)malloc(sizeof(DNode));
p->next = r;
r->provide = p;
r->data = i;
r->next = NULL;
L1->length++;
p = r;
}
ebbDNode(L1, 6);
addDNode(L1, 4, 3);//这一个函数会报异常
for (int i = 0; r1->next != NULL; i++)
{
printf("%d\n", r1->data);
r1 = r1->next;
}
return 0;
}