#include <iostream>
using namespace std;
#define MaxSize 100
typedef struct node {
int data;
struct node *next;
} LNode, *LinkList;
//建立带头结点的链表
void InitList(LinkList &L) {
L = new LNode;
L->next = NULL;
}
//就是往队列的前面插,头部插入法建表 //输出数据与原数据是倒序的
void InputList_H(LinkList &L, int n) {
LNode *p;//用于开辟新的结点
for (int i = 1; i <= n; i++) {
p = new LNode;
cin >> p->data;
//将新结点插入到头结点后
p->next = L->next;
L->next = p;
}
}
//插入一个之后,往后面插入//尾部插入法建表 //正序
void InputList_R(LinkList &L, int n) {
LNode *p;//用于开辟新的结点
LNode *r; //r用于指向表尾结点
r = L;
for (int i = 1; i <= n; i++) {
p = new LNode;
cin >> p->data;
//将新结点插入到表尾
r->next = p;
r = p;
}
r->next = NULL;
}
void ShowList(LinkList L) {
LNode *p; //用于遍历
p = L->next;
while (p != NULL) {
cout << p->data << "\t";
p = p->next;
}
}
int getLength(LinkList L) {
LNode *p;//用于遍历
p = L->next;
int len = 0;
while (p != NULL) {
len++;
p = p->next;
}
return len;
}
void insertR(LinkList &L) {
LNode *p;
p = new LNode;
p->next = NULL;
cout << " 请输入在表尾插入的结点:" << endl;
cin >> p->data;
LNode *r = L;
while (r->next != NULL) {
r = r->next;
}
r->next = p;
}
//typedef int ElemType
/*typedef struct S
{
int data[MaxSize];
//ElemType
int length;
}L;*/
int main() {
LNode *head;
// LinkList head;
int data;
do {
cout << endl;
cout << "t 1 单链表的初始化 " << endl;
cout << "t 2 单链表的输入 " << endl;
cout << "t 3 单链表的显示 " << endl;
cout << "t 4 单链表的表长 " << endl;
cout << "t 5 在表尾插入一个元素 " << endl;
cout << "t 6 单链表的位置查找 " << endl;
cout << "t 7 单链表的插入 " << endl;
cout << "t 8 单链表的按位置删除 " << endl;
cout << "t 9 单链表中删除某个元素 " << endl;
cout << "t 10 两个有序表的合并 " << endl;
cout << "t 0 退出操作 " << endl;
cin >> data;
if (data == 1)
InitList(head);
else if (data == 2) {
int n;
cout << "\n\t请输入数据量: " << endl;
cin >> n;
InputList_R(head, n);
} else if (data == 3)
ShowList(head);
else if (data == 4)
cout << getLength(head);
else if (data == 5)
insertR(head);
} while (data != 0);
return 0;
}
功能1-5已实现,感觉主要还是得理解一下程序和基础知识