typedef struct Node {
struct Node* prev;
int val;
struct Node* next;
}Node, *linklist;
linklist Initlist(Node* L) {
L = (Node*)malloc(sizeof(Node));
if (L == NULL) {
exit(1);
}
else {
L->next = NULL;
L->prev = NULL;
}
return L;
}
linklist headlist(Node* L) {
L->next = NULL;
L->val = 10086;
L->prev = NULL;
Node* s;
for (int i = 0; i < 5; i++) {
s = (Node*)malloc(sizeof(Node));
s->val = i + 1;
s->next = L->next;
/*重要*/
if (L->next != NULL) {
L->next->prev = s;
}
/* */
L->next = s;
/*重要*/s->prev = L;
}
return L;
}
void show(Node* L) {
linklist s;
s = L->next;
while (s != NULL) {
printf("%d", s->val);
s = s->next;
}
}
linklist findp(Node* L) {
linklist s;
s = L->next;
while (s->next != NULL) {//如果是s!= NULL会出错
s = s->next;
}
return s;
}
void show1(Node* L) {
linklist s;
s =findp(L);///尾指针
while (s != L) {
printf("%d", s->val);
s = s->prev;
}
}
int main(void) {
linklist m;
m = (Node*)malloc(sizeof(Node));
Initlist(m);
headlist(m);
show(m);
printf("\n-------------\n");
show1(m);
return 0;
}
双向不循环链表----之头插法
于 2022-07-28 13:05:11 首次发布