这个运行结果答案部分正确,还有什么错误的地方或者遗漏的条件吗?
#include <stdio.h>
#include <stdlib.h>
typedef struct Node
{
int data;
struct Node* next;
}node;
node* head = NULL;
int size = 0;
void insertD(int k, int d) {
node* p = (node*)malloc(sizeof(node));
p->data = d;
p->next = NULL;
if (k == 0) {
if(size == 0){
head = (node*)malloc(sizeof(node));
head->data = d;
head->next = NULL;
}
else{
p->next = head;
head = p;
}
}
else
{
if (k > size) return;
node* q = head;
for (int i = 1; i < k; ++i) {
q = q->next;
}
node* t = q->next;
q->next = p;
p->next = t;
}
size++;
}
void deletD(int k) {
if (k == 1) {
if(size < 1) return;
node* p = head;
head = head->next;
free(p);
}
else {
if (k > size || k == 0) return;
node* p = head;
for (int i = 1; i < k - 1; ++i) {
p = p->next;
}
node* q = p->next;
p->next = q->next;
free(q);
}
size--;
if(size == 0){
head = NULL;
}
}
void printD() {
if(!head) return;
node* p = head;
while (p) {
printf("%d ", p->data);
p = p->next;
}
}
int inputD(char* str, int i) {
int b = 0;
while (str[i] != '\0') {
b = b * 10 + str[i] - '0';
i++;
}
if(b>=0&&b<100000)
return b;
}
int* inputN(char* str, int n) {
int str1 = 0;
int temp = 0;
int zz = 0;
int* num = (int*)malloc(sizeof(int) * n);
while (str[str1] != '\0')
{
if (str[str1] == ' ') {
num[zz] = temp;
temp = 0;
zz++;
str1++;
continue;
}
temp = temp * 10 + str[str1] - '0';
str1++;
}
num[zz] = temp;
return num;
}
int main() {
char str[100000];
int n = 0;
gets(str);
n = inputD(str, 0);
gets(str);
int* num = inputN(str, n);
head = (node*)malloc(sizeof(node));
node* root = head;
for (int i = 0; i < n; ++i) {
node* p = (node*)malloc(sizeof(node));
p->data = num[i];
p->next = NULL;
root->next = p;
root = root->next;
size++;
}
head = head->next;
int m;
gets(str);
m = inputD(str, 0);
while (m--) {
gets(str);
if (str[0] == '0') {
int* num3 = inputN(str, 3);
insertD(num3[1], num3[2]);
}
else {
int* num2 = inputN(str, 2);
deletD(num2[1]);
}
}
printD();
return 0;
}