写了个很简单的双向链表,新手可以学下,老手可以指点下……
程序代码:
/************************************ *双向链表: *说说这个链表的问题吧: *①这个链表不是由一个自定义函数创建的。从而不能移植。 *②尚未实现排序等基本操作。 *③不能用一个函数将整个链表以顺序或者逆序输出。 **************************************/ #include <stdio.h> #include <stdlib.h> #define MALLOC_M(list) (list *)malloc(sizeof(list)) #define SIZE 20 typedef struct list list; struct list { char str[SIZE]; struct list *last; struct list *next; }; int main(void) { list *head = NULL, *tail = NULL; list *p1, *p2; p1 = MALLOC_M(list); printf("Please input a string:\n"); scanf("%s", p1->str); //创建链表 while(p1->str[0] != '#') { if (head == NULL) { head = p1; head->last = NULL; } else { p2->next = p1; p1->last = p2; } p2 = p1; p1 = MALLOC_M(list); printf("Please input a string:\n"); scanf("%s", p1->str); } free(p1); p2->next = NULL; tail = p2; //顺序输出 p1 = head; while(p1 != NULL) { printf("%s\n", p1->str); p1 = p1->next; } //逆序输出 printf("\n-------------------------------\n"); p2 = tail; while(p2 != NULL) { printf("%s\n", p2->str); p2 = p2->last; } return 0; }
==========================================
代码来自我的博客:http://www.
==========================================