嘿嘿`高手`这个程序运行了一下是对的`

一如往昔……
1.算法设计思想:
利用单链表和队列相结合的方式创建双向链表,比只用一个头
头结点创建链表要简单的多。
2.程序总共分四个函数
CreateList(); 用来创建链表。
DeleteInsert(); 用来删除头结点且将其插入到适当的位置。
VisitList(); 用来打印链表
DestroyList(); 用来销毁所创建的链表
3. 调试过程中需要注意将删除的结点插入到表尾的情况,
因为此中情况是需要单独处理。
#include <stdio.h>
#include <malloc.h>
typedef char datatype;
typedef struct node
{
datatype data;
struct node *next;
}linklist;
linklist *p,*q,*head;
main()
{
char c;
head = (linklist *)malloc(sizeof(linklist));
head->next = NULL;
p = head;
c = getchar();
while(c != '@')
{
q = (linklist *)malloc(sizeof(linklist));
q->data = c;
q->next = NULL;
p->next = q;
p = p->next;
c = getchar();
}
for(p=head->next; p!=NULL; p=p->next)
{
printf("%5c", p->data);
}
}