寻找一c++链表基本操作的代码

2024-11-09 10:47:24
推荐回答(2个)
回答1:

我写了一个简单的链表操作:
刚通过编译,你可以自己适当加入功能;

//链表基本操作,链表的生成,长度,插入,删除,打印。
#include
#include
#include
using namespace std;
#define NULL 0
int n=0; //链表长度,定义为全局变量
struct link
{
int num; //学号(数据域)
string name; //姓名(数据域)
link *next; //指针域
};

link *creat() //链表的产生函数
{
link *head, *p1, *p;
p1=p=new link;
cout<<"请输入链表(以0为结束):"< cin>>p1->num>>p1->name;
head=NULL;
while(p1->num!=0)
{
n++;
if(n==1) head=p1;
else p->next=p1;
p=p1;
p1=new link;
cin>>p1->num>>p1->name;
}
p->next=NULL;
return(head);
}

void print(link *head) //链表的打印函数
{
link *p;
p=head;
if(head!=NULL)
do
{
cout<num<<","<name;
p=p->next;
if(p!=NULL)
cout<<"-->";
}while(p!=NULL);
cout<}

void dele(link *head) //删除k位置的节点
{
int key=1,k;
link *p1,*p2;
cout< cin>>k;
if(head==NULL){ cout<<"这是空表!"< p1=head;
while(key!=k&&p1->next!=NULL)
{ p2=p1;p1=p1->next; key++; }
if(key==k)
{
if(p1==head) head=p1->next;
else { p2->next=p1->next; n--; }
}
else cout<<"找不到这个节点!"< cout<<"删除 "< print(head);
}

void insert(link *head) //在链表的k位置插入节点
{
int k; link *in;
cout< cin>>k;
cout< in=new link;
cin>>in->num>>in->name;
int key=1;
link *p1,*p2,*p0;
p1=head; p0=in;
if(k>n) { cout<<"插入点过长!"< else
{
while(keynext!=NULL)
{
p2=p1;
p1=p1->next;
key++;
}
if(head==p1)head=p0;
else p2->next=p0;
p0->next=p1;
n++;
}
cout<<"在 "< print(head);
}

int main()
{
int number;
link *head;
head=creat(); //链表的生成
do
{
system("cls");
cout<<"当前链表为:"< print(head);
cout<<"==============================链表操作================================="< cout<<"1.元素插入"< cout<<"2.元素删除"< cout<<"3.操作结束"< cout<<"请输入操作的序号:";
cin>>number;
switch(number)
{
case 1:
insert(head); break;
case 2:
dele(head); break;
case 3: break;
}
system("pause");
}while(number!=3);
return 0;
}

由于时间仓促,没有写成类形式,只要把几个链表操作写成成员函数就好了。

如果需要帮忙可以hi我,也可以Q我:820795071

加油哦~

回答2:

你确定一定要连接数据库吗?
要连接sql server 还是 access ?
如果你是初学,暂时不要想着操作数据库;想了解链表,可以看看链表的建立、增加、删除、查找、排序、显示之类的,下面有个例子,供参考:
http://hi.baidu.com/ctralt/blog/item/65b389fdf507741709244daf.html