实现的基础操作有:
1.链表的创建
2.链表中元素的删除
3.向链表添加元素
4.链表输出显示
以下代码用c++语法实现,与malloc函数配套使用的free函数操作偷懒未写。此代码仅为自己练习用,有书写不规范的地方请见谅。
代码如下:
#include <iostream>
typedef struct linknode
{
int data;
struct linknode* next; //链表结构体
}linknode,*linklist;
using namespace std;
int main(int argc, const char * argv[]) {
bool install_linklist(linklist& p);
bool display_linklist(linklist p); //链表各功能函数
bool delete_linklist(linklist p,int location);
bool add_data_linklist(linklist p,int location,int data);
linklist mylist;
int number;
int data;
cout<<"please install mylist(write 9999 to exit)"<<endl;
install_linklist(mylist);
cout<<"finsh install!"<<endl;
cout<<" mylist is :"<<endl;
display_linklist(mylist);
cout<<"please choose one element's location in mylist to be deleted"<<endl;
cin>>number;
if (delete_linklist(mylist, number))
{
cout<<"mylist is: "<<flush;
display_linklist(mylist);
cout<<"after deleted"<<endl;
}
cout<<"please add one data into mylist:"<<endl;
cin>>data;
cout<<"choose location:"<<endl;
cin>>number;
add_data_linklist(mylist, number, data);
cout<<"mylist is:"<<flush;
display_linklist(mylist);
return 0;
}
bool install_linklist(linklist& p) // 链表的创建函数
{
int data;
linknode* tempt;
linknode* q;
p=(linklist)malloc(sizeof(linknode));
q=p;
cout<<" enter your data for mylist:"<<endl;
cin>>data;
while (data!=9999) {
tempt=(linknode*)malloc(sizeof(linknode));
tempt->data=data;
q->next=tempt;
q=tempt;
cin>>data;
}
return 1;
}
bool display_linklist(linklist p) //链表遍历显示函数
{
linknode* test;
test=p->next;
while (test!=NULL) {
cout<< test->data <<flush;
cout<<" "<<flush;
test=test->next;
}
cout<<endl;
return 1;
}
bool delete_linklist(linklist p,int location) //删除链表中任一位置数据函数
{
int count=0;
linklist q;
linklist tempt;
q=p;
while (q->next!=NULL) {
count=count+1;
q=q->next;
}
if (location>count)
{
cout<<"ERROR!"<<endl;
return 0;
}
else
{
q=p;
for (int i=0; i<location-1; i++) {
q=q->next;
}
tempt=q;
q=q->next->next;
tempt->next=q;
cout<<" delete successful!"<<endl;
return 1;
}
}
bool add_data_linklist(linklist p,int location,int data) //链表添加数据函数
{
int count=0;
linklist q;
linklist sample;
q=p;
while (q->next!=NULL) {
count=count+1;
q=q->next;
}
if (location>count)
{
cout<<"ERROR!"<<endl;
return 0;
}
else
{
q=p;
for (int i=0; i<location-1; i++) {
q=q->next;
}
sample=(linknode*)malloc(sizeof(linknode));
sample->data=data;
sample->next=q->next;
q->next=sample;
}
return 1;
}