Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- using namespace std;
- struct node
- {
- int info;
- node *next;
- };
- typedef node *NodeP;// указатель на тип node
- NodeP head = NULL; // указатель на начало списка
- NodeP p; // указатель на текущий элемент
- NodeP tail;
- int number;
- node * create(NodeP)
- {
- int let = 1;
- int i, num;
- tail = head; // указатель на конец списка
- while (let)
- {
- printf("enter element: ");
- scanf("%d", &number);
- p = (node*)malloc(sizeof(node));
- if (head == NULL) // если список пуст
- {
- head = p;// выделение памяти для нового элемента
- head->info = number; // запись значения в список
- head->next = NULL;
- tail = head;
- }
- else
- {
- p->info = number;
- tail->next = p;
- p->next = NULL;
- tail = p;
- printf("continue (1/0)? ");
- scanf("%d", &let);
- }
- }
- return tail;
- }
- node * insert(NodeP, int insert_elem, int idx)
- {
- int num, i;
- tail = head;
- num = idx;
- for (i = 0; i < num; i++)
- {
- tail = tail->next;
- if (tail == NULL)
- {
- cout << "idx doesnt exist" << endl;
- break;
- }
- }
- if (i == num)
- {
- number = insert_elem;
- p = (node*)malloc(sizeof(node));
- p->next = tail->next;
- tail->next = p; // tail в данном случае элемент, после которого вставка
- p->info = number;
- }
- return p;
- }
- int search(NodeP, int insert_elem)
- {
- int idx = -1;
- p = head;
- while (p != NULL && p->info > insert_elem)
- {
- idx++;
- p = p->next;
- }
- return idx;
- }
- void print(NodeP)
- {
- p = head;
- while (p != NULL)
- {
- cout << p->info << ' ';
- p = p->next;
- }
- cout << endl;
- return;
- }
- int main()
- {
- int idx, elem;
- create(p);
- print(p);
- cout << "enter insert elem: ";
- cin >> elem;
- idx = search(p, elem);
- insert(p, elem, idx);
- print(p);
- return 0;
- }
Add Comment
Please, Sign In to add comment