C语言 数据结构线性表的问题

创建线性表,有用户决定数据的个数。请用户输入数据,输出数据,及线性表的长度,询问是否查找数据,若查找则由用户输入需查找的数据,显示此数据在线性表中的位置(第几个)... 创建线性表,有用户决定数据的个数。请用户输入数据,输出数据,及线性表的长度,询问是否查找数据,若查找则由用户输入需查找的数据,显示此数据在线性表中的位置(第几个) 展开
 我来答
qizhi0119
2009-10-16 · TA获得超过357个赞
知道小有建树答主
回答量:510
采纳率:0%
帮助的人:242万
展开全部
/*
创建线性表,有用户决定数据的个数。请用户输入数据,输出数据,及线性表的长度,
询问是否查找数据,若查找则由用户输入需查找的数据,显示此数据在线性表中的位置(第几个)
*/
#include <stdio.h>
#include <stdlib.h>
#define NULL 0
#define LEN sizeof(struct Node)
struct Node
{
int num;
struct Node* next;
};
struct Node *createline();
void showline(struct Node *head);
int getlen(struct Node *head);
int selectline(struct Node *head,int data);
int main()
{
struct Node *head;
int selflag;
int len = 0;
head = createline();
if(head == NULL)
{
printf("create error\n");
return 1;
}
showline(head);
printf("line's len is %d\n",getlen(head));
printf("0 select,other not select\n");
scanf("%d",&selflag);
if(selflag == 0)
{
printf("请输入要查找的数字:");
scanf("%d",&selflag);
len = selectline(head,selflag);
if(len < 0)
{
printf("无此数据\n");
}
else
{
printf("此数据在第%d个位置\n",len);
}
}
return 0;
}

struct Node *createline()
{
struct Node *head = NULL,*p1,*p2;
int len;
int i;
printf("请输入要插入数据的个数:");
scanf("%d",&len);
if(len <= 0 )
{
printf("len error\n");
return NULL;
}

for(i = 0; i < len; ++i)
{
p1 = (struct Node*)malloc(LEN);
printf("请输入第%d个数据:",i+1);
scanf("%d",&p1->num);
p1->next = NULL;
if(i == 0)
{
head = p1;
}
else
{
p2->next = p1;
}
p2 = p1;
}

return head;
}
void showline(struct Node *head)
{
struct Node *p1;
p1 = head;
while(p1)
{
printf("%d ",p1->num);
p1 = p1->next;
}
printf("\n");
return ;
}
int getlen(struct Node *head)
{
int len = 0;
struct Node *p1;
p1 = head;
while(p1)
{
len += 1;
p1 = p1->next;
}
return len;
}

int selectline(struct Node *head,int data)
{
int len = 1;
int flag = 0;
struct Node *p1;
p1 = head;
while(p1)
{
if(p1->num == data)
{
flag = 1;
break;
}
len += 1;
p1=p1->next;
}
if(flag == 0)
{
len = -1;
}
return len;
}
conny的知识小店
2009-10-15 · TA获得超过1952个赞
知道小有建树答主
回答量:549
采纳率:100%
帮助的人:445万
展开全部
建议你查看我编的一个程序,就是动态创建线性表,查询,删除等等,链接如下:http://zhidao.baidu.com/question/120960583.html
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-10-16
展开全部
// 线性表.cpp : Defines the entry point for the console application.
// 创建线性表,有用户决定数据的个数。
//请用户输入数据,输出数据,及线性表的长度,
//询问是否查找数据,若查找则由用户输入需查找的数据,显示此数据在线性表中的位置(第几个)
#include "stdafx.h"
#include <stdio.h>
#include "stdlib.h"
#define NUM 1000

void search(int *a,int m);
int List[NUM];

int main(int argc, char* argv[])
{
int num=0;
int ch=1;
char m;
while (ch)
{
printf("按1,输入线性表中数据;\n 其他数字,结束输入\n");
scanf("%d",&ch);
if (ch==1)
{
printf("请输入第%d个数据\n",num+1);
scanf("%d",&List[num]);
num++;
}
else break;
}
printf("线性表中数据为:\n");
for (int i=0;i<num;i++)
{
printf("%4d",List[i]);
}
printf("\n线性表长度为:%d\n",num);
printf("是否查找数据Y/N(or y/n)\n");
scanf("%c",&m);
if (m == 'Y' || m == 'y')
{
search(List,num);
}
else
return 0;
}

void search(int *a,int m)
{
int b;
printf("请输入要查找的数据:");
scanf("%d",&b);
for (int i=0;i<m;i++)
{
if (b==a[i])
{
printf("此数据在表中的位置是:%d",i+1);
return;
}
}
printf("没有所查数据。");
return;
}

刚写了一份,没有进行错误判断,仅供参考
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式