写了个很简单的双向链表,新手可以学下,老手可以指点下……
程序代码:
/************************************
*双向链表:
*说说这个链表的问题吧:
*①这个链表不是由一个自定义函数创建的。从而不能移植。
*②尚未实现排序等基本操作。
*③不能用一个函数将整个链表以顺序或者逆序输出。
**************************************/
#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.
==========================================










