#include <iostream>
#include <cstring>
#include <string>
#include <stdlib.h>
using namespace std;
int len = 0;
typedef struct node {
	int data;
	node* next;
};
void create_list(node*& p) {
	node* p1 = p, * s;
	scanf("%d", &len);
	for (int i = 0; i < len; i++)
	{
		s = (node*)malloc(sizeof(node));
		cin >> s->data;
		s->next = p1->next;
		p1->next = s;
	}
}
void show_list(node*& n) {
	node* p;
	p = n->next;
	if (p == NULL)	//链表为空
	{
		cout << "Link list is empty\n";
	}
	else {
		while (p != NULL)
		{
			cout << p->data << " ";
			p = p->next;
		}
		cout << "\n";
	}
}
//删除指定位置的数
void delete_list(node *& n,int i) {
	node *p = n, *q;
	int j = 0;
	if (len == 0 || i > len)
	{
		printf("delete fail\n");
	}
	else {
		while (j < i)	//定位到要删除的位置
		{
			q = p;		
			p = p->next;
			j++;
		}
		q->next = p->next;
		free(p);
		len--;
		cout << "delete OK\n";
	}
}
//获取第i个元素
void get_list(node*& n, int i) {
	node* p = n;
	int j = 0;
	if (len == 0 || i > len)
	{
		printf("get fail\n");
	}
	else {
		while (j < i)
		{
			p = p->next;
			j++;
		}
		cout << p->data << "\n";
	}
}
//插入node
void insert_list(node*& n, int i, int e) {
	node* p = n, *s;
	int j = 0;
	if (i - 1 > len)
	{
		printf("insert fail\n");
	}
	else {
		while (j < i - 1)
		{
			p = p->next;
			j++;
		}
		s = (node*)malloc(sizeof(node));
		s->data = e;
		s->next = p->next;
		p->next = s;
		len++;
		cout << "insert OK\n";
	}
}
int main() {
	int count, i, e;
	node* n = (node*)malloc(sizeof(node));
	n->next = NULL;
	create_list(n);
	char flag[7];
	scanf("%d", &count);
	scanf("%s", flag);
	while (count--)
	{
		if (!strcmp(flag,"show"))
		{
			show_list(n);
		}
		else if (!strcmp(flag, "delete"))
		{
			scanf("%d", &i);
			delete_list(n, i);
		}
		else if (!strcmp(flag, "insert"))
		{
			scanf("%d %d", &i, &e);
			insert_list(n, i, e);
		}
		else if (!strcmp(flag, "get"))
		{
			scanf("%d", &i);
			get_list(n, i);
		}
		scanf("%s", flag);
	}
	return 0;
}


 

0.0分

3 人评分

  评论区

  • «
  • »