马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
// 双向链表的基本操作.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include<time.h>
#include<iostream>
using namespace std;
#define N 5
typedef struct dulnode
{
int data;
dulnode *prior;
dulnode *next;
}dulnode,*dulinklist;
void createlist(dulinklist &l)
{
dulinklist p;
l = new dulnode;
l->next = NULL;
srand((int)(0));
for (int i = 0; i < N; i++)
{
p = new dulnode;
p->data = rand() % 100;
p->next = l->next;
l->next = p;
}
}
void printlist(dulinklist &l)
{
dulinklist p = l->next;
while (p)
{
cout << p->data << '\t';
p = p->next;
}
cout << endl;
}
dulinklist getelem(dulinklist &l, int i)
{
dulinklist p = l->next;
int j = 1;
while (p&&j < i)
{
p = p->next;
++j;
}
if (!p&&j>i)
exit(0);
return p;
}
int listinsert(dulinklist &l, int i, int e)
{
dulinklist p,s;
if (!(p = getelem(l, i)))
exit(0);
s = new dulnode;
s->data = e;
s->prior = p->prior;
p->prior->next = s;
s->next = p;
p->prior = s;
return 1;
}
int main()
{
dulinklist l;
int e,i;
createlist(l);
printlist(l);
cout << "输入要插入的数:";
cin >> e;
cout << "输入要插入的位置:";
cin >> i;
listinsert(l, i, e);
printlist(l);
return 0;
}
|