建立含有n个数据元素的带头结点的单链表,依次输出该表中各元素的值,再逆置,输出表中各元素值。

运行无误可以加分... 运行无误可以加分 展开
 我来答
xoalyg
推荐于2016-12-02 · TA获得超过4178个赞
知道大有可为答主
回答量:2356
采纳率:100%
帮助的人:2384万
展开全部

#include <stdio.h>

#include <stdlib.h>

typedef struct node {

int data;

struct node *next;

} *ListNode;

ListNode CreateList(int n) {

ListNode head,p,q;

head = p = (ListNode)malloc(sizeof(node));

p->data = 0;

for(int i = 0;i < n;i++) {

q = (ListNode)malloc(sizeof(node));

q->data = 2*i + 1;

p->next = q;

p = q;

}

p->next = head;

return head;

}

void PrintList(ListNode head) {

ListNode p = head->next;

while(p != head) {

printf("%d ",p->data);

p = p->next;

}

printf("\n\n");

}

void FreeHeap(ListNode head) {

ListNode p,q;

p = head;

q = p->next;

while(q != head) {

p = q;

q = p->next;

free(p);

}

free(head);

}

ListNode ReverseList(ListNode head) {

    ListNode p,q,s;

    //链表为空,或是单结点链表直接返回头结点

    if (head == NULL || head->next == NULL) return head;

    p = head;

    q = head->next;

    while (q != head) {

        s = q->next;

        q->next = p;

        p = q;

        q = s;

    }

    head->next = p;

  return head;

}

int main() {

int n = 10;

ListNode head = CreateList(n);

PrintList(head);

PrintList(ReverseList(head));

FreeHeap(head);

return 0;

}

追问
用程序运行有许多错误,你用的是C语言吗?
追答
运行截图都发出来了,没有错误。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式