#include <iostream>
#include <algorithm>
using namespace std;
typedef struct ListNode
{
int data;
struct ListNode *next,*prior;
}linklist;
linklist *head = NULL;
linklist *CreateList(int *arr, int len)
{
linklist* p, *rear;
head = (linklist*)malloc(sizeof(linklist));
head->data = arr[0];
rear = head;
int count = 1;
while (count < len )
{
p = (linklist*)malloc(sizeof(linklist));
p->data = arr[count];
rear->next = p;
p->prior = rear;
rear = p;
count++;
}
rear->next = NULL;
return head;
}
//在第i个结点后插入一个新结点
void InsertNode(linklist *head, int i,int x)
{
linklist *p;
p = (linklist*)malloc(sizeof(linklist));
for (int k = 0;k < i-1;++k)
head = head->next;
p->data = x;
head->next->prior = p;
p->next = head->next;
head->next = p;
p->prior = head;
}
//删除第i个结点后的结点
void DelNode(linklist *head, int i)
{
for (int k = 0;k < i - 1;++k)
head = head->next;
head->next = head->next->next;
head->next->next->prior = head;
}
int main()
{
int array[] = { 1,2,8,2,3,4,5};
linklist *head1 = CreateList(array, 7);
linklist *head2 = head1;
InsertNode(head1, 4,100);
while (head1)
{
printf("%d ", head1->data);
head1 = head1->next;
}
printf("\n");
DelNode(head2, 4);
while (head2)
{
printf("%d ", head2->data);
head2 = head2->next;
}
return 0;
}
链表-----双向链表的插入、删除
猜你喜欢
转载自blog.csdn.net/weixin_39916039/article/details/81481083
今日推荐
周排行