程序有误,不知道哪里错了,题目就是一个关于双向链表的打印。
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#define MaxSize 5
typedef struct DuLNode
{
char varchar;
struct DuLNode *prior; //前驱指针
struct DuLNode *next; //后驱指针
}DuLNode,*DuLinkList;
DuLinkList InitDuLinkList(DuLNode *H)
{
DuLinkList p,q;
int i,c=0;
for(i=0;i<MaxSize;i++)
{
p = (DuLinkList)malloc(sizeof(DuLNode));
c++;
if(c==1)
{
q = H = p; //首元结点做头节点
q->prior = NULL;
}
else
{
q->next = p;
p->prior = q;
q = p;
}
}
return H;
}
DuLinkList InputElem(DuLinkList H)
{
int i;
DuLinkList p,q;
p = H;
for(i=0;i<MaxSize;i++)
{
printf("请输入第%d个字符:",i+1);
scanf("%c",&p->varchar);
if(p->next==NULL) q = p; //找到尾节点
p = p->next;
}
return q;
}
void Print(DuLinkList *H,DuLinkList *L)
{
DuLinkList p,q;
char s[2][20];
int i;
p = H;
q = L;
for(i=0;i<MaxSize;i++)
{
s[0][i] = p->varchar;
s[1][i] = q->varchar;
p = p->next;
q = q->prior;
}
printf("顺序打印为:%s\n逆序打印为:%s\n",s[0],s[1]);
if(strcmp(s[0],s[1]) == 0) printf("相等\n");
else printf("不相等\n");
}
int main()
{
DuLNode *H,*L;
H = InitDuLinkList(H); //返回头节点
L = InputElem(H); //返回尾节点
Print(H,L);
return 0;
}