请你编写程序,建立2个带头结点单链表,输入若干整数将正整数插入第1个单链表,将负整数插入第2个单链表,插入前和插入后单链表保持递增或相等次序,显示2个单链表,最后销毁。程序不可存在内存泄漏。
时间: 2024-03-23 22:31:02 浏览: 141
c编 建立带头单链表
好的,这是一个关于单链表的编程问题,我可以为您提供代码示例,下面是基于C语言的实现:
```
#include <stdio.h>
#include <stdlib.h>
typedef struct node{
int data;
struct node *next;
}Node;
Node *createList(){
Node *head = (Node*)malloc(sizeof(Node));
head->next = NULL;
return head;
}
void insert(Node *head, int num){
Node *p = head;
while(p->next && p->next->data < num){
p = p->next;
}
Node *newNode = (Node*)malloc(sizeof(Node));
newNode->data = num;
newNode->next = p->next;
p->next = newNode;
}
void printList(Node *head){
Node *p = head->next;
while(p){
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
void destroyList(Node *head){
Node *p = head;
while(p){
p = head->next;
free(head);
head = p;
}
}
int main(){
Node *positiveList = createList(); // 正数链表
Node *negativeList = createList(); // 负数链表
int num;
printf("请输入若干整数:\n");
while(scanf("%d", &num) != EOF){
if(num > 0){
insert(positiveList, num);
} else if(num < 0){
insert(negativeList, num);
}
}
printf("正数链表:");
printList(positiveList);
printf("负数链表:");
printList(negativeList);
destroyList(positiveList);
destroyList(negativeList);
return 0;
}
```
您可以将上述代码复制到C语言编译器中进行运行测试。我希望这能够帮助您解决问题。
阅读全文