C++实现双向循环链表,包括链表的创建,插入,删除,查询等基本操作,并带有操作菜单,见底部效果图
// 双向循环链表3.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
//每个链表对象的结构
typedef struct node {
int data;
struct node *pre;
struct node *next;
}Dnode;
//创建一个带头结点的双向循环链表
void creatLinkList(Dnode *&head)
{
Dnode *p, *q;
int x;
int i = 1;//结点位置
q = (Dnode *)malloc(sizeof(Dnode));
if (q == NULL)
{
cout << "内存分配失败!" << endl;
}
q->data = 0;
q->pre = q;
q->next = q;
head = q;
cout << "请输入第" << i << "个结点值:";
cin >> x;
cout << endl;
while (x != 0)
{
p = (Dnode *)malloc(sizeof(Dnode));
if (p == NULL)
{
cout << "内存分配失败!" << endl;
}
p->data = x;
p->next = head;
p->pre = q;
q->next = p;
q = p;
i++;
cout << "请输入第" << i << "个结点值:";
cin