#include <stdio.h>
#include <stdlib.h>
typedef struct linklist {
int e;
struct linklist* next;
}linklist, * Linklist;
Linklist tail;
int count;
Linklist initlinklist(void) {
Linklist head = (Linklist)malloc(sizeof(int));
tail = head;
tail->next = NULL;
count = 0;
return head;
}
void insertlinklist(int e) {
Linklist node = (Linklist)malloc(sizeof(int));
node->e = e;
node->next = NULL;
tail->next = node;
tail = node;
count++;
}
void travellinklist(Linklist l) {
Linklist p = l->next;
while(p) {
printf("%d ", p->e);
p = p->next;
}
}
void selectsort(Linklist l) {
Linklist p = l->next, q;
int t;
while(p) {
q = p->next;
while(q) {
if(p->e > q->e) {
t = p->e;
p->e = q->e;
q->e = t;
}
q = q->next;
}
p = p->next;
}
}
int deletelinklist(Linklist l, int e) {
Linklist p = l;
while(p->next) {
if(p->next->e == e) {
Linklist t = p->next;
p->next = p->next->next;
free(t);
count--;
return 0;
}
p = p->next;
}
return -1;
}
int main(void) {
int a[10] = {9, 5, 6, 1, 10, 0, 3, 2, 8, 7}, i;
Linklist head = initlinklist();
for(i = 0; i < 10; i++) {
insertlinklist(a[i]);
}
printf("排序前:");
travellinklist(head);
printf("\n\n");
printf("元素个数:%d\n\n\n", count);
selectsort(head);
printf("排序后:");
travellinklist(head);
printf("\n\n");
printf("元素个数:%d\n\n\n", count);
for(i = 0; i < 5; i++) {
deletelinklist(head, i);
}
printf("删除部分元素:");
travellinklist(head);
printf("\n\n");
printf("元素个数:%d\n\n\n", count);
for(i = 0; i < 20; i++) {
deletelinklist(head, i);
}
printf("删除所有元素:");
travellinklist(head);
printf("\n\n");
printf("元素个数:%d\n\n\n", count);
}
构造单链表
最新推荐文章于 2023-03-15 19:45:59 发布