线性结构列表的增删
#include "stdio.h"
#include "stdlib.h"
typedef int E;
struct ListNode{
E element;
struct ListNode * next;
};
typedef ListNode *Node;
int initList(Node head){
head->next = NULL;
}
int insertList(Node head,E element,E index){
if(index < 1) return 0;
while(--index){
head = head->next;
if(head == NULL) return 0;
}
Node node = (Node)malloc(sizeof(struct ListNode));
if(node==NULL) return 0;
node->element = element;
node ->next = head->next;
head->next = node;
return 1;
}
int delectList(Node head,E index){
if(index<1)return 0;
while(index--){
head = head->next;
if(head ==NULL) return 0;
}
if(head->next == NULL) return 0;
Node tmp = head->next;
head->next = head->next->next;
free(tmp);
return 1;
}
void printList(Node head){
while (head->next) {
head = head->next;
printf("%d ", head->element);
}
}
int main() {
struct ListNode head;
initList(&head);
for (int i = 0; i <= 3; ++i) {
insertList(&head, i * 100, i);
}
delectList(&head,1);
printList(&head);
}
评论 (0)