下面是循环双链表的简单操作,其中很多细节没有考虑到,比如没有判断空链表,目的提供思想,如有出现错误,请大家指正!
点击(此处)折叠或打开
-
#include<iostream>
-
//#include<stdlib.h>
-
using namespace std;
-
struct List {
-
-
int data;
-
struct List *last, *next;
-
};
-
-
List *CreateList() {
-
-
List *first;
-
first = new List; //first = (List *)malloc(sizeof(List));
-
first->next = first;
-
first->last = first;
-
return first;
-
}
-
-
List *InitialList(List *first) {
-
-
List *p, *head;
-
head = first;
-
for (int i = 0; i < 5; i++) {
-
-
p = new List;
-
p->data = i;
-
p->last = head;
-
head->next = p;
-
-
head = p;
-
}
-
-
first->last = head;
-
head->next = first;
-
return first;
-
}
-
-
void PrintList(List *first){
-
List *q = first;
-
first = first->next;
-
cout << "正序打印:";
-
for (; first != q; first = first->next) {
-
-
cout << first->data << " ";
-
}
-
-
cout << endl;
-
-
List *p = first;
-
first = first->last;
-
cout << "逆序打印:";
-
for (; first != p; first = first->last) {
-
-
cout << first->data << " ";
-
}
-
}
-
-
void InsertList(List *first,int i,int x) {
-
-
List *head, *p;
-
head = first;
-
-
for (int j = 0; j < i - 1; j++) {
-
-
head = head->next;
-
}
-
-
p = new List;
-
p->data = x;
-
p->last = head;
-
p->next = head->next; //P
-
head->next->last = p;
-
head->next = p; //该过程操作有顺序,该步一定要在P之后,否则会覆盖head ->next
-
-
}
-
-
void DeleteList(List *first, int i) {
-
-
List *head, *p;
-
head = first;
-
-
for (int j = 0; j < i; j++) {
-
-
head = head->next;
-
}
-
-
p = head;
-
head->last->next = head->next; //由于是循环双链表,可以直接以删除点为中心操作
-
head->next->last = head->last;
-
delete p;
-
p = NULL;
-
-
first = first->next;
-
-
for (; !first; first = first->next) {
-
-
cout << first->data << " ";
-
}
-
-
}
-
void DestoryList(List *first){
-
-
List *p, *head;
-
head = first;
-
while(head !=first){
-
-
p = head;
-
head = head ->next;
-
delete p;
-
-
}
-
delete first; //一定要销毁头指针
-
first = NULL; //为了防止出现迷途指针,将头结点置空
-
cout << "链表已经销毁" << endl;
-
exit(0);
-
}
-
-
int main() {
-
-
List *s,*t;
-
s = CreateList();
-
t = InitialList(s);
-
DestoryList(t);
-
//InsertList(t, 3, 11);
-
//DeleteList(t,4);
-
PrintList(t);
- }
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29876893/viewspace-1814415/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/29876893/viewspace-1814415/

被折叠的 条评论
为什么被折叠?



