头插入单向链表 C 语言实现
#include <stdio.h>
struct node {
int data;
struct node * next;
};
int main()
{
// 头插入链表
// create list
struct node n9[10];
struct node * phead = NULL;
for(int i=9; i>=0; i--) {
n9[i].data = i*i;
n9[i].next = phead;
phead = &n9[i];
}
// insert nd after insertPos
struct node nd; nd.data = 33;
struct node * insertPos = &n9[3];
nd.next=insertPos->next;
insertPos->next = &nd;
// find 81
struct node * pos = phead;
while(pos != NULL) {
if(pos->data == 81) break;
pos = pos->next;
}
if(pos != NULL) printf("find pos->data: %d\n", pos->data);
// delete n9[2];
struct node * deletePos = &n9[9];
if(deletePos->next != NULL)
deletePos->next = deletePos->next->next;
else {
struct node * pos = phead;
while(pos != NULL) {
if(pos->next == deletePos) break;
pos = pos->next;
}
if(pos != NULL) pos->next = pos->next->next;
}
// out put
struct node * ptemp = phead;
while(ptemp != NULL) {
printf("%d ", ptemp->data);
ptemp = ptemp->next;
}
printf("\n");