代码示例
#include "iostream"
#include <stdlib.h>
using namespace std;
#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0
typedef int Status;
typedef int ElemType;
typedef struct Node
{
ElemType data;
struct Node *next;
} Node;
typedef struct Node *LinkList;
LinkList InitList()
{
LinkList head;
head = (LinkList)malloc(sizeof(LinkList));
head->next = NULL;
return head;
}
void CreateFormHead(LinkList *head, int n)
{
LinkList s;
int i;
srand(time_t(1));
for (i = 0; i < n; i++)
{
s = (LinkList)malloc(sizeof(LinkList));
s->data = rand() % 100 + 1;
s->next = (*head)->next;
(*head)->next = s;
}
}
void CreateFormHead2(LinkList *head)
{
LinkList s;
double c;
int flag = 1;
while (flag)
{
cin >> c;
if (c != -99999)
{
s = (LinkList)malloc(sizeof(LinkList));
s->data = c;
s->next = (*head)->next;
(*head)->next = s;
}
else
{
flag = 0;
}
}
}
void CreateFormTail(LinkList *head)
{
LinkList r,s;
r = *head;
double c;
int flag = 1;
while (flag)
{
cin >> c;
if (c != -99999)
{
s = (LinkList)malloc(sizeof(LinkList));
s->data = c;
r->next = s;
r = s;
}
else
{
flag = 0;
r->next = NULL;
}
}
}
Status List_Insert(LinkList *head, int i, ElemType e)
{
LinkList pre, s;
pre = *head;
int k=1;
while (pre && k < i)
{
pre = pre->next;
k++;
}
if (!pre || k > i)
{
cout << "插入位置不合理!" << endl;
return ERROR;
}
s = (LinkList)malloc(sizeof(Node));
s->data = e;
s->next = pre->next;
pre->next = s;
return OK;
}
Status List_Delete(LinkList *head, int i, ElemType *e)
{
LinkList pre, r;
pre = *head;
int k = 1;
while (pre->next && k < i)
{
pre = pre->next;
++k;
}
if (!(pre->next) || k > i)
{
cout << "删除位置不合理!" << endl;
return ERROR;
}
r = pre->next;
pre->next = r->next;
*e = r->data;
free(r);
return OK;
}
Status Get_Data(LinkList *head, int i, ElemType *e)
{
LinkList p;
p = *head;
int k = 0;
while (p && k < i)
{
p = p->next;
k++;
}
if (!p || k > i)
{
cout << "查找位置不合理!" << endl;
return ERROR;
}
*e = p->data;
return OK;
}
Status PrintList(LinkList *head)
{
LinkList p;
p = (*head)->next;
if (head != NULL)
do
{
cout << p->data << " ";
p = p->next;
} while (p != NULL);
cout << endl;
return OK;
}
void main()
{
LinkList head;
ElemType e;
cout << "开始初始化..............................................." << endl;
head = InitList();
cout << "初始化操作完毕!" << endl;
cout << "开始建表(这里是尾插法建表,输入-99999结束建表)..........." << endl;
CreateFormTail(&head);
cout << "建表操作完毕!" << endl;
cout << "开始插入................................................." << endl;
List_Insert(&head, 5, 21);
cout << "插入操作完毕!" << endl;
cout << "打印线性表中的所有数据:";
PrintList(&head);
cout << "--------------------------------------------" << endl;
cout << "开始删除(这里删除第2个元素)............................" << endl;
List_Delete(&head, 2, &e);
cout << "删除操作完毕!" << endl;
cout << "删除后打印线性表中的所有数据:";
PrintList(&head);
cout << "--------------------------------------------" << endl;
cout << "开始查找(这里查找第6个元素)............................." << endl;
Get_Data(&head,6, &e);
cout << "查找操作完毕!" << endl;
cout << "打印查找到的数据:";
cout << e << endl;
system("pause");
}
运行截图
