#include <stdio.h>
#include <stdlib.h>
typedef struct node {
int data;
struct node* next;
} Node, *LinkList;
LinkList createLinkedList() {
Node *L, *s, *r;
int x;
L = (LinkList)malloc(sizeof(Node));
L->next = NULL;
r = L;
if (L == NULL) {
printf("无法分配内存.");
return NULL;
}
printf("输入节点数据 (输入999结束): ");
while (scanf("%d", &x) && x != 999) {
s = (LinkList)malloc(sizeof(Node));
if (s == NULL) {
printf("无法分配内存.");
return 0;
}
s->data = x;
s->next = r->next;
r->next = s;
r = s;
}
return L;
}
void printLinkedList(LinkList L) {
Node* temp = L->next;
while (temp != NULL) {
printf("%d -> ", temp->data);
temp = temp->next;
}
printf("NULL\n");
}
int getElement(LinkList L,int i){
if(i<1){
printf("错误输入");
return 0;
}
Node *p;
p = L;
for(int j=1;j<i;j++){
p = p->next;
}
p = p->next;
return p->data;
}
void insert(LinkList L,int i,int x){
Node *s, *r;
int j;
r = L;
for(j=1;j<i;j++){
printf("%d",j);
r = r->next;
if(r == NULL){
printf("出错");
break;
}
}
s = (Node*)malloc(sizeof(Node));
s->data = x;
s->next = r->next;
r->next = s;
}
int main() {
LinkList L;
int i,x;
L = createLinkedList();
printf("创建的链表为: ");
printLinkedList(L);
printf("想插入的序号: ");
scanf("%d",&i);
printf("想插入的数值: ");
scanf("%d",&x);
insert(L,i,x);
printf("修改后的链表为: ");
printLinkedList(L);
return 0;
}