数据结构题目,那个老兄帮忙给个答案

when8250 2010-08-07 08:48:20
1)分别建立包含10个数据元素的链式存储线性表;
(2)从键盘输入一个数据元素,插入到线性表中第k(包含0号位置)个位置;
(3)从键盘输入一个数据元素关键字或位置k(包含1号位置),从线性表中删除相应数据元素;
(4)给出程序及插入、删除前和插入、删除后线性表结果。
能帮我做出来吗 谢谢了
...全文
91 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
canshui 2010-08-08
不知道对不对啊
#include <stdio.h>
#include <stdlib.h>
typedef struct node {
char data ;
struct node *next ;
}List ;
List *create() ;
void out_print(List *head) ;
void do_insert(List *head) ;
void do_delet(List *head) ;
int length(List *head) ;
void do_delet_2(List *head) ;
void main()
{
List *head ;
head=create() ;
out_print(head) ;
printf("\n") ;

do_insert(head) ;
out_print(head) ;
printf("\n") ;

do_delet(head) ;
out_print(head) ;
printf("\n") ;

do_delet_2(head) ;
out_print(head) ;
printf("\n") ;
}
int length(List *head)
{
int i=0 ;
List *p ;
for(p=head->next; p; p=p->next)
i++ ;
return i ;
}
void do_delet(List *head)
{
List *p, *pre ;
int k, count=0 ;
printf("删除操作::\n") ;
p=head ;
if(!p->next) {
printf("表空\n") ;
return ;
}
printf("输入删除位置:") ;
scanf("%d", &k) ; getchar() ; //吸收键盘缓冲
if(k<=0||k>length(head)) {
printf("ERROR->越界\n") ;
exit(1) ;
}
while(p&&count<k) {
pre=p ;
p=p->next ;
count++ ;
}
pre->next=p->next ;
free(p) ;
}
void do_delet_2(List *head)
{
List *p, *pre ;
int count=0 ;
char x ;
printf("删除操作::\n") ;
p=head ;
if(!p->next) {
printf("表空\n") ;
return ;
}
printf("输入插入元素(字符型):") ;
scanf("%c", &x) ; getchar() ; //吸收键盘缓冲
while(p&&p->data!=x) {
pre=p ;
p=p->next ;
}
pre->next=p->next ;
free(p) ;
}
void do_insert(List *head)
{
List *p, *pre, *q ;
int k, count=0 ;
char x ;
pre=p=head ;
printf("插入操作::\n") ;
printf("输入插入位置:") ;
scanf("%d", &k) ; getchar() ; //吸收键盘缓冲
printf("输入插入元素(字符型):") ;
scanf("%c", &x) ; getchar() ; //吸收键盘缓冲
while(p&&count<k) {
pre=p ;
p=p->next ;
count++ ;
}
if(!(q=(List *)malloc(sizeof(List)))) {
printf("ERROR->分配空间失败\n") ;
exit(1) ;
}
q->data=x ;
q->next=pre->next ;
pre->next=q ;
}
List *create()
{
List *head, *rear, *p ;
int i ;
head=rear=(List *)malloc(sizeof(List)) ;
if(!head) {
printf("ERROR\n") ;
exit(1) ;
}
for(i=0; i<10; i++) {
p=(List *)malloc(sizeof(List)) ;
p->data='a'+i ;
rear->next=p ;
rear=p ;
}
rear->next=NULL ;
return head ;
}
void out_print(List *head)
{
List *p ;
p=head->next ;
printf("元素为:") ;
while(p) {
printf("%5c", p->data) ;
p=p->next ;
}
}
回复
chj_2003 2010-08-08
作业?
回复
十八道胡同 2010-08-08
[Quote=引用 1 楼 tu_lq 的回复:]
不明白链式存储线性表的意思,你指的是普通链表?还是静态链?
[/Quote]
应该就是普通链表,支持增 删
回复
toplinq 2010-08-07
不明白链式存储线性表的意思,你指的是普通链表?还是静态链?
回复
发动态
发帖子
数据结构与算法
创建于2007-08-27

3.2w+

社区成员

数据结构与算法相关内容讨论专区
申请成为版主
社区公告
暂无公告