数据结构链表操作

#include
using namespace std;
class LNode {
public:
int data;
int count;
LNode *next;

};
void CreatList_h(LNode* &L,int n);//用头插法建立链表
void CreateList_t(LNode* &L,int n);//用尾插法建立链表
void InsertList(LNode* &L);//向链表的指定位置插入元素
void DeleteList(LNode* &L);//删除链表中指定元素值
void FindList(LNode* L);//查找链表中的元素
void OutputList();//输出链表中元素

//用头插法建立链表
void CreatList_h(LNode* &L,int n) {
LNode *q;
L = new LNode;
L->next = NULL;
cout << “请输入数据:” << endl;
for(n; n>0; --n) {
q = new LNode;
cin >> q->data;
L->count++;
q->next = L->next;
L->next=q;
}

}

//输出链表中元素
void OutputList(LNode* L) {
LNode *q;
cout << endl << “数据为:” << endl;
q = L->next;
for(int i=0; icount; i++) {
cout << q->data << “\t” ;
q = q->next;
}
}

//用尾插法建立链表
void CreateList_t(LNode* &L,int n) {
LNode *q,*p;
L = new LNode;
L->next = NULL;
p = L;
cout << “请输入数据:” << endl;
for(n; n>0; n–) {
q = new LNode;
cin >> q->data;
L->count++;
p->next = q;
q->next = NULL;
p = q;
}
}

//向链表的指定位置插入元素
void InsertList(LNode* &L) {
int n,i = 1;
LNode *S,*p,*q;
S = new LNode;
p = L->next;
cout << endl << “请输入需要插入元素及位置:” << endl;
cin >> S->data >> n;
while(p!=NULL && i<n-1 ) {
p = p->next;
i++;
}
if(p == NULL || i> n-1)
cout << “插入位置不合法!” << endl;
S->next = p->next;
p->next = S;
L->count++;
}

//删除
void DeleteList(LNode* &L) {
int e;
cout << endl << “请输入删除元素位置” << endl;
cin >> e;
LNode *p=L->next;
int i=0;
LNode *q=L;
while(p!=NULL && i<e-1 && e>0) {
q=p;
p=p->next;
i++;
}
if((p==NULL&&i>=e-1) || e<1)
cout << “没有该元素!” << endl;
else {
q->next=p->next;
}
L->count–;

}

//查找
void FindList(LNode* L) {
int e,i=0;
cout << endl << “请输入要查找的元素:”<< endl << endl;
cin >> e;
LNode *q = L->next;
while(q != NULL ) {
if(q->data == e) {
cout <<endl<< “该元素位置为第”<< i+1 << “个节点!” << endl;
break;
}
i++;
q=q->next;

}
if(q == NULL) {
	cout << "查找元素不存在!";
}

}

//菜单
//void Function() {
// system(“pause”);
// system(“cls”);
// cout << “1.初始化线性表” << endl << “2.输入数据”<< endl <<“3.插入元素” << endl << “4.删除元素” << endl << “5.删除指定位置元素” << endl << “6.查找元素” << endl << “7.输出线性表” << endl ;
// cout << “8.删除串元素”<< endl << “9.合并有序表” << endl;
// cout << “请选择你要执行的功能:”;
//}
int main() {
LNode *L ,*heada;
int n;
// cout << “输入头插入的个数:” << endl;
// cin >> n ;
// CreatList_h( L,n);
// OutputList(L);
cout << endl <<“输入尾插入的个数:” << endl;
cin >> n ;
CreateList_t(L,n);
OutputList(L);
// InsertList(L);
// OutputList(L);
// DeleteList(L);
// OutputList(L);
// FindList(L);
cout << endl <<“输入尾插入的个数:” << endl;
cin >> n ;
CreateList_t(heada,n);
OutputList(heada);
return 0;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值