#define _CRT_SECURE_NO_WARNINGS

#include <iostream>

#include <stdio.h>

//#include <cmath>

//#include <algorithm>

//#include <vector>

#include <stdlib.h>

//#include <string.h>

using namespace std;

typedef int ElemType;


typedef struct LNode

{

ElemType data;

struct LNode* next;

}LNode, * LinkList;


bool GetElem(LinkList &L,int i,ElemType &e)

{

LinkList p;

p = L->next;//0 1 2

int j = 1;

while (p&&j<i)

{

p = p->next;

++j;

}

if (!p||j>i)

{

return -1;

}

e = p->data;

return 1;

};

bool ListInsert(LinkList& L, int i, ElemType e)

{

LinkList p, s; int k = 0;

p = L;

int j = 0;

while (p&&j<i-1)

{

p = p->next;

++j;

}

if(!p || i>j+1 )

{

return k;

}

s = (LinkList)malloc(sizeof(LNode));

s->data = e;

s->next = p->next;

p->next = s;

return 1;

}

bool ListDelete_L(LinkList& L, int i, ElemType&e)

{

LinkList p, q, x; int k=0;

x = L->next;

if (!x)

{

return k;

}

p = L;

int j = 0;

while (p->next&&j<i-1)

{

p = p->next;

++j;

}

if (!(p->next)||j>i-1)

{

return -1;

}

q = p->next;

p->next = q->next;

e = q->data;

free(q);

return 1;

}

void CreateList_L(LinkList& L, int n)

{

LinkList p;

int i;

L = (LinkList)malloc(sizeof(LNode));

L->next = NULL;

for (int i=0;i<n;i++)

{

p = (LinkList)malloc(sizeof(LNode));

scanf("%d", &p->data);

p->next = L->next;

L->next = p;

}

}

void Show_L(LinkList&L)

{

LinkList p;

p = L->next;

if (!p)

{

printf("Link list is empty");

}

while (p)

{

printf("%d ", p->data);

p = p->next;

}

}

int main()

{

int a, b, e;

LinkList L;

cin >> a;

CreateList_L(L, a);

char str1[7] = "show";

char str2[7] = "delete";

char str3[7] = "insert";

char str4[7] = "get";

char str[7];

cin >> b;



for (int i=0;i<b;i++)

{

cin >> str;

if (strcmp(str,str1)==0)

{

//printf("%s..", str);

Show_L(L);

printf("\n");

}

else if(strcmp(str, str2)==0)

{

int a;

cin >> a;

int k=ListDelete_L(L, a, e);

if (k)

{

printf("delete OK\n");

}

else

{

printf("delete fail\n");

}

}

else if (strcmp(str, str3) == 0)

{

int a;

cin >> a>>e;

int k = ListInsert(L, a, e);

if (k)

{

printf("insert OK\n");

}

else

{

printf("insert fail\n");

}

}

else if(strcmp(str, str4) == 0)

{

int a = 0; cin >> a;

int k = GetElem (L, a, e);

if (k)

{

printf("%d\n",e);

}

else

{

printf("get fail\n");

}

}

else

{

printf("..error..");

}


}

return 0;

}


点赞(0)
 

0.0分

0 人评分

C语言网提供由在职研发工程师或ACM蓝桥杯竞赛优秀选手录制的视频教程,并配有习题和答疑,点击了解:

一点编程也不会写的:零基础C语言学练课程

解决困扰你多年的C语言疑难杂症特性的C语言进阶课程

从零到写出一个爬虫的Python编程课程

只会语法写不出代码?手把手带你写100个编程真题的编程百练课程

信息学奥赛或C++选手的 必学C++课程

蓝桥杯ACM、信息学奥赛的必学课程:算法竞赛课入门课程

手把手讲解近五年真题的蓝桥杯辅导课程

评论列表 共有 0 条评论

暂无评论