/*单链表的创建 随机输入一些数据,请采用尾插法创建一个带头结点的单链表,将数据存入,然后顺序遍历该单链表并输出数据,以查看是否创建成功。 输入:6 3 5 2 9 0 输出:6 3 5 2 9 备注:0代表输入结束*/ #include<stdio.h> #include<malloc.h> typedef int ElemType; typedef struct Node{ ElemType data; struct Node *next; }LNode,*Linklist; void Initial(Linklist * L){ (*L)=(Linklist)malloc(sizeof(LNode)); (*L)->next=NULL; } void TailCreate(Linklist L){ LNode *r,*s; int m; r=L; while(1){ scanf("%d",&m); if(m==0){ break; } s=(LNode*)malloc(sizeof(LNode)); s->data=m; r->next=s; r=s;} r->next=NULL; } void show(Linklist L){ LNode *temp; temp=L->next; while(temp!=NULL){ printf("%d ",temp->data); temp=temp->next; } } int main(){ Linklist L; Initial(&L); TailCreate(L); show(L); return 0; }C:\Program Files (x86)\Dev-Cpp\MinGW64\x86_64-w64-mingw32\bin\ld.exe cannot open output file C:\Users\王淑婧\Desktop\sjjg.1_3.exe: Permission deniedC:\Users\王淑婧\Desktop\collect2.exe [Error] ld returned 1 exit status代码怎么修改
时间: 2023-06-15 14:07:05 浏览: 200
这个错误提示是因为你的编译器没有权限在指定目录下创建可执行文件。可以尝试将代码保存到其他目录下,或者以管理员身份运行编译器。
另外,代码中需要加上头文件<stdlib.h>,因为使用了malloc函数。同时,在TailCreate函数中,应该将头结点r初始化为L,而不是r=L->next。修改后的代码如下:
相关问题
创建单链表,并遍历单链表,输出所有奇数序号结点数据
好的,以下是创建单链表并遍历输出所有奇数序号结点数据的代码实现:
```c++
#include <iostream>
using namespace std;
// 定义单链表结构体
struct ListNode {
int val;
ListNode* next;
ListNode(int x) : val(x), next(nullptr) {}
};
// 创建单链表
ListNode* createLinkedList() {
int n; // 链表节点个数
cout << "请输入链表节点个数: ";
cin >> n;
ListNode* head = new ListNode(-1); // 创建头节点
ListNode* curr = head;
for (int i = 0; i < n; i++) {
int data;
cout << "请输入第" << i+1 << "个节点的值: ";
cin >> data;
ListNode* node = new ListNode(data); // 创建新节点
curr->next = node; // 将新节点插入链表尾部
curr = node;
}
return head; // 返回头节点
}
// 遍历单链表,输出所有奇数序号结点数据
void printOddNodes(ListNode* head) {
ListNode* curr = head->next;
int count = 1;
while (curr != nullptr) {
if (count % 2 == 1) {
cout << curr->val << " ";
}
curr = curr->next;
count++;
}
}
int main() {
// 创建单链表
ListNode* head = createLinkedList();
// 遍历单链表,输出所有奇数序号结点数据
cout << "所有奇数序号结点数据为: ";
printOddNodes(head);
cout << endl;
return 0;
}
```
该程序首先通过 `createLinkedList` 函数创建单链表,并返回头节点。然后调用 `printOddNodes` 函数遍历单链表,输出所有奇数序号结点的数据。注意,这里的头节点是没有数据的,实际上单链表的第一个节点是头节点的下一个节点。
用尾插法创建一个带头结点的单链表,并将链表就地逆置后输出,一组整数以eof结束
尾插法创建一个带头结点的单链表的过程是这样的:首先创建一个头结点,将头结点的指针域置为空。然后逐个读入整数,对于每个整数,创建一个新的结点,并将数据存入该结点的数据域。然后将新结点插入到链表的尾部,即将尾结点的指针域指向该新结点。
例如,我们输入整数序列为:1, 2, 3, 4, 5,然后输入eof表示输入结束。那么创建的带头结点的单链表如下所示:
头结点 -> 1 -> 2 -> 3 -> 4 -> 5 -> NULL
接下来是链表的就地逆置过程。逆置链表的思路是,遍历链表,将每个结点的指针域指向其前一个结点,同时记录下当前结点的下一个结点作为遍历的下一个结点。需要注意的是,逆置完成后,原来的头结点将变为尾结点。
具体的逆置过程如下所示:
1. 记录当前结点为p,初始为头结点的下一个结点;
2. 将当前结点的指针域指向前一个结点;
3. 将前一个结点更新为当前结点,将当前结点更新为下一个结点;
4. 重复2-3步骤直到当前结点为空。
5. 将头结点的指针域指向前一个结点。
逆置完成后,链表变为:
尾结点 -> 5 -> 4 -> 3 -> 2 -> 1 -> 头结点
最后,输出逆置后的链表:
5, 4, 3, 2, 1
阅读全文
相关推荐












