#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
#define MAXSIZE 100
#define OVERFLOW -1
#define OK 1
#define ERROR 0
typedef struct Lnode {
int data;
struct Lnode* next;
}Lnode,*LinkList;
int InitList(LinkList& L) {
L = new Lnode;
L->next = NULL;
return OK;
}
int ListEmpty(LinkList L) {
if (L->next) //非空返回0
return 0;
else //空返回1
return 1;
}
int GetElem(LinkList L, int i,int &e) {
Lnode* p;
p=L->next; int j = 1;
while (p&& j < i) {
p = p->next;
++j;
}
if (!p || j > i) return ERROR;
e = p->data;
return OK;
}
void CreatList_Head(LinkList& L, int n){
L = new Lnode;
L->next = NULL;
for (int i = n; i > 0; --i)
{
Lnode* p;
p = new Lnode;
printf("请输入数字:\n");
scanf_s("%d" ,&p->data);
p->next = L->next;
L->next = p;
}
}
int DestroyList(LinkList& L) {
Lnode* p;
while (L) {
p = L;
L = L->next;
delete p;
}
return OK;
}
int ListLength(LinkList L) {
Lnode *p;
p = L->next;
int i = 0;
while (p) {
i++;
p = p->next;
}
return i;
}
int main() {
LinkList L;
InitList(L);
CreatList_Head(L, 5);
int e = 0;
printf("---------------------------------------------分割线--------------------------- --------------—\n");
GetElem(L, 1, e);
printf("打印第1个元素:%d\n",e);
GetElem(L, 2, e);
printf("打印第2个元素:%d\n", e);
GetElem(L, 3, e);
printf("打印第3个元素:%d\n", e);
GetElem(L, 4, e);
printf("打印第4个元素:%d\n", e);
GetElem(L, 5, e);
printf("打印第5个元素:%d\n", e);
printf("单链表的长度是:%d\n", ListLength(L));
DestroyList(L);
printf("单链表是否为空(0不空,1空)?。。。。结果是:%d\n", ListEmpty(L));
return 0;
}
链表的一些基本操作的实现
最新推荐文章于 2024-04-23 00:27:34 发布