高分求简单C++数据结构编程问题,在线等,明天交报告

来源:百度知道 编辑:UC知道 时间:2024/05/25 04:15:53
#include <iostream>
using namespace std;

typedef struct node
{
char data;
struct node *next;
}link;

link * get(link *l, int i)
{
link *p;int j=0;
p=l;
while((j<i) && (p->next!=NULL))
{p=p->next;j++;}
if(j==i)
return p;
else
return NULL;
}

link * ins (link *l, char ch,int i)
{ link *p,*s;
p=get(l,i-1);
if(p==NULL)
cout<<"输入有误"<<endl;
else
{
s=(link *)malloc(sizeof(link));
s->data=ch;
s->next=p->next;
p->next=s;
}
return l;
}

link * find(link *l, char ch)
{
link *p; int i=0; int j=0;
p=l;

while(p!=NULL)
{ i++;
if(p->data!=ch)
p=p->next;
else {cout<<"您查找的数据在第"<<i-1<<"个位置."<<endl;
j=1;p=p->next;
}

} <

你的程序是一个菜单选择命令类型的操作
通过输入1,2,3,4分别执行不同操作,若输入其他字符则输入错误
我从前到后依次给你简单解释一下各个功能。
typedef struct node,定义一个结构体,包含2个变量,结点数据值、指向下一个结点的指针值。

link * get(link *l, int i) ,获取指定位置结点的值,第一个参数为链表的头指针值,第二个参数为指定查询位置,返回的是指向目标结点的指针值

link * ins (link *l, char ch,int i) ,插入一个新结点,这个函数我觉得不很正确,因为返回类型是结构体的指针型,而return l; 显得不匹配。

link * find(link *l, char ch),根据字符值查询链表,输入字符在链表的位置。

link * del(link *l, int i) ,在指定位置删除一个结点。

link * add(link *l ) ,添加一个字符串合并,这个函数似乎也不正确。

link * print(link *l),输入链表全部数据,并且用菜单形式,自由选择当前命令。

大致就这个意思,程序是基本的链表函数集合,不是很全,比如求链表长度,排序,逆置等操作可以一一添加。

这个就是字符串的操作程序啊,有插入、删除等等。。。