建立含有n个数据元素的带头结点的单链表,依次输出该表中各元素的值,再逆置,输出表中各元素值。
答案:1 悬赏:10 手机版
解决时间 2021-03-17 12:11
- 提问者网友:伴风望海
- 2021-03-16 18:16
建立含有n个数据元素的带头结点的单链表,依次输出该表中各元素的值,再逆置,输出表中各元素值。
最佳答案
- 五星知识达人网友:毛毛
- 2021-03-16 19:11
#include
#include
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;
}
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语言吗?追答运行截图都发出来了,没有错误。
#include
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("
");
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语言吗?追答运行截图都发出来了,没有错误。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯