数据结构(C语言)单链表的问题

(1)建立含有n个数据元素的带头结点的单链表;
(2)依次输出该表中各元素的值;
(3)将单链表进行逆置运算;
(4)依次输出逆置后表中各元素的值。

1、链表的抽象数据类型定义为:
ADT LINKLIST{
数据对象:D={ai| ai∈(0,1,…,9),i=0,1,2,…,n,n≥0}
数据关系:R={< ai-1, ai >| ai-1, ai∈D,i=1,2,…,n}
基本操作:
CreateList(&L)
操作结果:创建一个链表L。
PrintList(L)
初始条件:链表L已存在。
操作结果:在屏幕上输出链表的值。
InverseList(L)
初始条件:链表L已存在。
操作结果:将链表逆置。
} ADT LINKLIST
2、本程序包含五个模块:
(1)主程序模块:
main(){
定义变量;
接受命令;
处理命令;
}
(2)创建链表模块——产生一个链表;
(3)输出链表模块——把链表输出;
(4)链表逆置模块——将链表逆置;

各模块之间的调用关系如下:
主程序模块—〉创建链表模块—〉输出链表模块 —〉链表逆置模块—〉输出链表模块

/*
这是结果,需要的话给我个地址
------------------------
***建立含有n个数据元素的带头结点的单链表***
请输入n = 5
请输入第1个元素:1
请输入第2个元素:2
请输入第3个元素:3
请输入第4个元素:4
请输入第5个元素:5
依次输出该表中各元素的值:1 2 3 4 5
将单链表进行逆置运算:
依次输出逆置后表中各元素的值:5 4 3 2 1
Press any key to continue
------------------------------
*/追问

我想要过程啊= =

追答

# include "stdio.h"
# include "stdlib.h"
typedef struct LNode
{
int data;
LNode * next;
} * LinkList;
LinkList create_list(LinkList * pHead);
void PrintList(LinkList pHead);
LinkList InverseList(LinkList L);
int main(void)
{
LinkList pHead;
pHead = create_list(&pHead);
printf("依次输出该表中各元素的值:");
PrintList(pHead);
printf("将单链表进行逆置运算:\n");
InverseList(pHead);
printf("依次输出逆置后表中各元素的值:");
PrintList(pHead);
return 0;
}
LinkList create_list(LinkList * pHead)
{
int len;
int i;
int val;
printf("***建立含有n个数据元素的带头结点的单链表***\n");
printf("请输入n = ");
int n;
scanf("%d",&n);

* pHead = (LinkList)malloc(sizeof(LNode));
LinkList pTail = * pHead;
pTail->next = NULL;
for (i=0;idata = val;
pTail->next = pNew;
pNew->next = NULL;
pTail = pNew;
}
return * pHead;
}
void PrintList(LinkList pHead)
{
LinkList p = pHead->next ;
while (NULL != p)
{
printf("%d ",p->data);
p = p->next;
}
printf("\n");
return ;
}
LinkList InverseList(LinkList L)//单链表的倒置算法
{
LNode * p,* q;
p = L->next;
L->next = NULL;
while(p)
{
q = p;
p = p->next;
q->next = L->next;
L->next = q;
}
return L;
}

追问

为什么我放在Visual C 6.0里面,C Source File,有30个错,4个警告〒_〒

追答

//这是调试好的,我又试了
//一次,是没有问题的
//你把问题贴上我看看

追问

追答

最简单的修改方式是把你的程序后缀.c改为.cpp

温馨提示:答案为网友推荐,仅供参考
相似回答