/*单链表的创建 随机输入一些数据,请采用尾插法创建一个带头结点的单链表,将数据存入,然后顺序遍历该单链表并输出数据,以查看是否创建成功。 输入: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 17:07:05 浏览: 122
这个错误提示是因为你的编译器没有权限在指定目录下创建可执行文件。可以尝试将代码保存到其他目录下,或者以管理员身份运行编译器。
另外,代码中需要加上头文件<stdlib.h>,因为使用了malloc函数。同时,在TailCreate函数中,应该将头结点r初始化为L,而不是r=L->next。修改后的代码如下:
相关问题
创建一个带头结点的单链表,其数据全都是随机生成的,并将其全部遍历出来
好的,下面是代码实现:
```python
import random
# 定义节点类
class Node:
def __init__(self, data=None, next=None):
self.data = data
self.next = next
# 定义单链表类
class LinkedList:
def __init__(self):
self.head = Node() # 头结点
# 添加新节点
def add_node(self, data):
new_node = Node(data)
cur = self.head
while cur.next != None:
cur = cur.next
cur.next = new_node
# 遍历链表
def traverse(self):
cur = self.head.next
while cur != None:
print(cur.data)
cur = cur.next
# 创建单链表
if __name__ == '__main__':
ll = LinkedList()
for i in range(10):
ll.add_node(random.randint(1, 100))
ll.traverse()
```
这段代码中,`LinkedList` 类包含了头结点 `self.head`,并且定义了 `add_node` 方法来添加新节点,定义了 `traverse` 方法来遍历链表。在 `__main__` 方法中,我们创建了一个 `LinkedList` 对象 `ll`,并且添加了 10 个随机生成的数据,最后遍历输出了每个节点的数据。
用尾插法创建一个带头结点的单链表,并将链表就地逆置后输出,一组整数以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