这个简单程序是用来实现链表的插入、删除、查找等基本操作
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
typedef struct LNode{
int date;
struct LNode *next;
}Node;
#define len sizeof(Node)
Node* creat(int n);
void output(Node*begin);
void get(Node *begin,int n);
Node* insert(Node*begin,int n,int x);
Node* delet(Node*begin,int n);
int main()
{
int n,ret,x,i;
char ch[4][20] = {{"show"}, {"delete"}, {"insert"},{"get"}};
char str[20];
scanf("%d",&n);
Node *begin;
begin = creat(n);
int count;
scanf("%d",&count);
while(count)
{
scanf("%s",str);
for(i = 0;i < 4;i++)
if(strcmp(ch[i],str)==0)
break;
switch(i)
{
case 0:output(begin);break;
case 1:scanf("%d",&n);begin = delet(begin,n);break;
case 2:scanf("%d%d",&n,&x);begin = insert(begin,n,x);break;
case 3:scanf("%d",&n);get(begin,n);break;
}
count--;
}
return 0;
}
Node* creat(int n)
{
int count = 0;
Node *p1,*p2;
p2 = malloc(len);
p2->next = NULL;
while(n)
{
p1 = malloc(len);
scanf("%d",&p1->date);
p1->next = p2->next;
p2->next = p1;
n--;
}
return p1;
}
void output(Node*begin)
{
Node *p1 = begin;
int flag = 0;
while(p1)
{
printf("%d ",p1->date);
p1 = p1->next;
flag = 1;
}
if(flag==0)
printf("Link list is empty\n");
else
putchar('\n');
}
void get(Node *begin,int n)
{
Node *p1;
p1 = begin;
int i = 0;
while(i < n-1 && p1)
{
p1 = p1->next;
i++;
}
if(i > n || p1==NULL)
printf("get fail\n");
if(p1->next)
printf("%d\n",p1->date);
}
Node* insert(Node*begin,int n,int x)
{
Node *front,*head,*move,*temp;
head = move = begin;
int i = 0;
while(i<n-1&&move)
{
front = move; move = move->next;
i++;
}
if(move==NULL)
{
head=malloc(len);
head->date=x; head->next=NULL;
}
if(move)
{
if(front==NULL)
{
head = temp = malloc(len);
temp->date = x;
temp->next = move;
}
else
{
temp = malloc(len);
temp->date = x;
front->next = temp; temp->next = move;
}
}
return head;
}
Node* delet(Node*begin,int n)
{
Node *front = NULL,*move = begin,*head = begin;
int i=0,flag = 0;
move = begin;
while(i<n-1 && move)
{
front = move;
move = move->next;
i++;
}
if(move==head&&move)
{
head = head->next;
flag=1;
}
else if(move)
{
front->next = move->next;
flag=1;
}
if(flag)
printf("delete OK\n");
else
printf("delete fail\n");
return head;
}
```
TL;DR
用调试工具