#include <stdio.h>
#include <string.h>
#include <stdlib.h> //stdlib.h 包括了malloc.h
#define N 17
typedef struct Node{
int data;
struct Node * next;
}Node;
Node * add21Node(Node * first);
Node * delNode(Node * start);
int main(){
Node *first=(Node *)malloc(sizeof(Node));
first->data=1;
first->next=NULL;
Node *last=add21Node(first);
last->next=first;
int i=0;
//ok
/*
Node *p=first;
while(i<100){
i++;
printf("%d",p->data);
p=p->next;
}*/
Node *p=first;
while(i<9){
p=delNode(p);
i++;
}
for(i=0;i<N-8;i++){
printf("%d,",p->data);
p=p->next;
}
}
Node * add21Node(Node * first){
Node *p=first;
int i=1;
while(i<=21){
i++;//while循环千万不要忘记i++
Node * newNode=(Node *)malloc(sizeof(Node));
newNode->data=i;
newNode->next=NULL;
p->next=newNode;
p=newNode;
}
return p;
}
/**
删除指定位置的节点 返回下一个节点
*/
Node * delNode(Node * start){
Node *p=start;
int i=1;
while(i<N-1){
i++;
p=p->next;
}//来到了要删除节点的前一个节点
Node *del=p->next;
printf("\n-%d--\n",del->data);
//free(del);
p->next=p->next->next;
free(del);//free语句不能放在上面那句话前面
return p->next->next;
}