本文主要是介绍一日一码07——链表,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
链表的实现,以后会更新。
/*带头结点链表常用操作*/#include <stdio.h>typedef struct Node
{int data;struct Node *next; //漏写过struct
} Node;Node* createList(int *arr, int n);int insertList(Node* head, int pos, int data);int deleteList(Node* head, int pos);void reverseList(Node **head);void printList(Node* head);Node* createList(int* arr, int n){Node *head = NULL;Node *p,*q;int i = 0;head = (Node*)malloc(sizeof(Node));p = head;for (i = 0; i < n; ++i){q = (Node*)malloc(sizeof(Node));q->data = arr[i];p->next = q;p = q;}p->next = NULL;return head;
}int insertList(Node* head, int pos, int data){int i = 0;Node *p,*q;p = head;while( p->next != NULL && ++i < pos){p = p->next;}if ( i != pos){printf("Insert fail,the postion is not exist.\n");return -1;}q = (Node*)malloc(sizeof(Node));q->data = data;q->next = p->next;p->next = q;return 0;
}int deleteList(Node* head, int pos){int i = 0;Node *p,*q;p = head;while( p->next != NULL && ++i < pos){p = p->next;}if ( i != pos){printf("delete fail,the postion is not exist.\n");return -1;}q = p->next;p->next = q->next;free(q);return 0;
}void reverseList(Node **head){Node *p,*q,*e;e = NULL;p = (*head)->next;if (p == NULL){return;}while(p->next != NULL){q = p;p = p->next;q->next = e;e = q;}p->next = e;(*head)->next = p;
}void printList(Node* head){Node* p;p = head;while(p->next != NULL){p = p->next;printf("%d ", p->data);}printf("\n");
}int main(int argc, char const *argv[])
{int arr[5] = {1,2,3,4,5};Node* head;head = createList(arr,5);printList(head);reverseList(&head);printList(head);return 0;
}
这篇关于一日一码07——链表的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!