使用 C++ 编程实现已排序的循环单链表
在数据结构中,链表是一个线性数据集合。列表中的每个元素或节点包括两项 - 数据和对下一个节点的引用。最后一个节点引用空。链表中的入口点称为列表头。
在单链表中,列表中的每个节点都存储一个单链表中的内容和一个指针或引用,以引用列表中的下一个节点。单链表不存储任何指向或引用上一个节点的指针。
由于它是一个已排序的单链表,因此链表中的数据项将始终保持排序。
这里有一个 C++ 程序来实现已排序的循环单链表
算法
Begin function createnode() to insert node in the list: It checks whether the list is empty or not. If the list is empty put the node as first element and update head. If list is not empty, It creates a newnode and inserts the number in the data field of the newnode. Now the newnode will be inserted in such a way that linked list will remain sorted. If it gets inserted at the last, then the newnode points to the head. If the newnode inserted at the first, then the linked list starts from there. End Begin function display() to print the list content having n number of nodes: Initialize c = 0. Initialize pointer variable with the start address while (c <= n) Print the node info Update pointer variable Increment c. End
示例代码
#include<iostream> using namespace std; struct nod { int d; nod *n; } *p = NULL, *head = NULL, *q = NULL, *np = NULL; int c = 0; void createnode(int n) { np = new nod; np->d = n; np->n = NULL; if (c == 0) { head = np; p = head; p->n = head; c++; } else if (c == 1) { p = head; q = p; if (np->d < p->d) { np->n = p; head = np; p->n = np; } else if (np->d > p->d) { p->n = np; np->n = head; } c++; } else { p = head; q = p; if (np->d < p->d) { np->n = p; head = np; do { p = p->n; } while (p->n != q); p->n = head; } else if (np->d > p->d) { while (p->n != head && q->d < np->d) { q = p; p = p->n; if (p->n == head) { p->n = np; np->n = head; } else if (np->d< p->d) { q->n = np; np->n = p; break; } } } } } void display(int i) { nod *t = head; int c = 0; while (c <= i ) { cout<<t->d<<"\t"; t = t->n; c++; } } int main() { int i = 0, n, a; cout<<"enter the no of nodes\n"; cin>>n; while (i < n) { cout<<"\nenter value of node\n"; cin>>a; createnode(a); i++; } cout<<"sorted circularly singly link list"<<endl; display(n); }
输出
enter the no of nodes 5 enter value of node 6 enter value of node 4 enter value of node 7 enter value of node 3 enter value of node 2 sorted circularly singly link list 2 3 4 6 7 2
广告