链表的创建,遍历,查找,删除。
#include#include #include struct Node { int data; struct Node* next; }; struct Node* createList()//创建 { struct Node* headNode = (struct Node*)malloc(sizeof(struct Node)); headNode->next = NULL; return headNode; } struct Node* createaNode(int data) { struct Node* newNode = (struct Node*)malloc(sizeof(struct Node)); newNode->data = data; newNode->next = NULL; return newNode; } void printList(struct Node* headNode)//遍历 { struct Node* pMove = headNode->next; while(pMove) { printf("%d ",pMove->data); pMove = pMove->next; } printf("n"); } //插入结点,参数 void insertNodeByHead(struct Node* headNode,int data) { //创建插入的结点 struct Node* newNode = createaNode(data); newNode->next = headNode->next; headNode->next = newNode; } //删除指定数据 void deleteNode(struct Node* headNode,int posData) { struct Node* posNode = headNode->next; struct Node* posNodeFront = headNode; if(posNode == NULL) printf("无法删除,链表为空n"); else { while(posNode->data != posData) { posNodeFront = posNode; posNode = posNodeFront->next; if(posNode==NULL) { printf("没有找到指定删除信息,无法删除n"); return; } } posNodeFront->next = posNode->next; free(posNode); } } int main() { struct Node* list = createList(); int n,i,x; printf("请输入数据个数:n"); scanf("%d",&n); printf("请输入数据:n"); for(i = 1;i <= n;i++) { scanf("%d",&x); insertNodeByHead(list,x); } printList(list); printf("请输入要删除的数据:n"); while(scanf("%d",&x)!=EOF) { deleteNode(list,x); printList(list); printf("请输入要删除的数据:n"); } return 0; }



