下面是循环双链表的简单操作,其中很多细节没有考虑到,比如没有判断
空链表,目的提供
思想,如有出现错误,请大家指正!
点击(此处)折叠或打开
- #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/