typedef struct Node{ int data; struct Node *next; }LNode,*LinkList; void InsertList(LinkList L,int x)
时间: 2024-01-14 07:01:44 浏览: 34
这是一个定义了单链表的结构体,包括一个整型数据成员 data 和一个指向下一个节点的指针成员 next。同时,将 LNode 定义为结构体 Node 的别名,LinkList 定义为指向 LNode 结构体的指针类型。
函数 InsertList 的作用是在单链表 L 的末尾插入一个值为 x 的节点。
相关问题
typedef struct Lnode { struct Lnode* next; int data; }Lnode, * LinkList; void InitList(LinkList & L) { L = new Lnode; L->next = NULL; }
L)
{
L = NULL; // 将头指针置为 NULL,表示链表为空
}
void CreateList(LinkList& L, int n)
{
Lnode* p, * q;
L = new Lnode; // 创建头结点
L->next = NULL;
q = L;
for (int i = 0; i < n; i++)
{
p = new Lnode; // 创建新节点
cin >> p->data;
p->next = NULL;
q->next = p;
q = p; // 将新节点插入到链表尾部
}
}
void DestroyList(LinkList& L)
{
Lnode* p, * q;
p = L;
while (p != NULL)
{
q = p->next;
delete p;
p = q; // 释放链表中所有节点的内存空间
}
L = NULL;
}
int ListLength(LinkList L)
{
int len = 0;
Lnode* p = L;
while (p->next != NULL)
{
len++;
p = p->next;
}
return len;
}
bool ListEmpty(LinkList L)
{
return L->next == NULL;
}
void GetElem(LinkList L, int i, int& e)
{
Lnode* p = L->next;
int j = 1;
while (p != NULL && j < i)
{
p = p->next;
j++;
}
if (p == NULL || j > i)
{
cout << "Error: out of range" << endl;
return;
}
e = p->data;
}
int LocateElem(LinkList L, int e)
{
Lnode* p = L->next;
int i = 1;
while (p != NULL && p->data != e)
{
p = p->next;
i++;
}
if (p == NULL)
return 0;
else
return i;
}
void ListInsert(LinkList& L, int i, int e)
{
Lnode* p = L;
int j = 0;
while (p != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p == NULL || j > i - 1)
{
cout << "Error: out of range" << endl;
return;
}
Lnode* q = new Lnode;
q->data = e;
q->next = p->next;
p->next = q; // 在第 i 个位置插入元素 e
}
void ListDelete(LinkList& L, int i, int& e)
{
Lnode* p = L;
int j = 0;
while (p->next != NULL && j < i - 1)
{
p = p->next;
j++;
}
if (p->next == NULL || j > i - 1)
{
cout << "Error: out of range" << endl;
return;
}
Lnode* q = p->next;
e = q->data;
p->next = q->next;
delete q; // 删除第 i 个位置的元素,并将其值赋给 e
}
void ListTraverse(LinkList L)
{
Lnode* p = L->next;
while (p != NULL)
{
cout << p->data << " ";
p = p->next;
}
cout << endl;
}
线性表的道理表存储结构 #include<stdio.h> #include<malloc.h> 申请空间 typedef int ElemType; typedef int Status; typedef struct Lnode { ElemType data; struct Lnode *next; }Lnode, *LinkList; Lnode a; LinkList b; 1.建立带表头节点的单链线性表L,建立后(逆序建立),再输出。 void CreateList(LinkList L,int n) void Print(LinkList L) 2. 在第一问的基础上,完成以下两个函数 1)插入函数: Status ListInsert(LinkList L,int i, ElemType e) 2) 删除函数: Status ListDelete(LinkList L, int i, ElemType *e) 3) 排序函数: Status ListSort(LinkList L)
1.建立带表头节点的单链线性表L,建立后(逆序建立),再输出。
```
void CreateList(LinkList L, int n) {
L->next = NULL; // 初始化链表为空
for (int i = n; i > 0; i--) {
Lnode *p = (Lnode*)malloc(sizeof(Lnode)); // 动态申请节点
scanf("%d", &p->data); // 输入节点数据
p->next = L->next; // 将新节点插入链表头部
L->next = p;
}
}
void Print(LinkList L) {
Lnode *p = L->next;
while (p != NULL) {
printf("%d ", p->data);
p = p->next;
}
printf("\n");
}
```
2.插入函数:
```
Status ListInsert(LinkList L, int i, ElemType e) {
if (i < 1) return 0; // 插入位置不合法
Lnode *p = L;
for (int j = 1; j < i && p != NULL; j++) {
p = p->next; // 查找要插入位置的前一个节点
}
if (p == NULL) return 0; // 插入位置不合法
Lnode *newNode = (Lnode*)malloc(sizeof(Lnode)); // 动态申请新节点
newNode->data = e;
newNode->next = p->next; // 将新节点插入到链表中
p->next = newNode;
return 1;
}
```
3.删除函数:
```
Status ListDelete(LinkList L, int i, ElemType *e) {
if (i < 1) return 0; // 删除位置不合法
Lnode *p = L;
for (int j = 1; j < i && p != NULL; j++) {
p = p->next; // 查找要删除位置的前一个节点
}
if (p == NULL || p->next == NULL) return 0; // 删除位置不合法
Lnode *q = p->next; // 要删除的节点
*e = q->data;
p->next = q->next; // 将要删除的节点从链表中摘除
free(q); // 释放节点空间
return 1;
}
```
4.排序函数:
```
Status ListSort(LinkList L) {
Lnode *p = L->next, *q;
while (p != NULL) {
q = p->next;
while (q != NULL) {
if (q->data < p->data) {
int temp = p->data;
p->data = q->data;
q->data = temp;
}
q = q->next;
}
p = p->next;
}
return 1;
}
```
相关推荐
![cpp](https://img-home.csdnimg.cn/images/20210720083646.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)