数据结构c语言求一个答案

上机:单链表基本运算和应用
一、实验内容:编写一个完整的C程序,能够实现单链表的建立、插入、删除、查找、输出操作。下面各出部分源代码,请讲程序补充完整,并调试运行。
源代码如下:
#include "stdlib.h"
#include "stdio.h"
typedef char datatype; /*单链表的类型定义*/
typedef struct node
{ datatype data;
struct node *next;
} linklist;

linklist *creatlink( ) /*建立一个单链表,返回单链表的头指针*/
{ char ch;
linklist *p,*head,*r;
ch=getchar();
head=(linklist*)malloc(sizeof(linklist));
r=head;
while(ch!='$')
{ p=(linklist*)malloc(sizeof(linklist));
p->data=ch;
r->next=p;
r=p;
ch=getchar();
}
r->next=NULL;
return head;
}
void print(linklist *head) /*遍历单链表,并输出每个结点的数据*/
{linklist *p;
p=head->next;
printf(“\nlinklist:”);
while(p!=NULL)
{printf("%c ",p->data);
p=p->next;
}
}
void insert(linklist *p,datatype x ) /*一个数值为x的新结点插入到*p结点之后*/
{…….. /*请将函数体的代码补充完整*/
}
void delete(linklist *head,linklist *p) /*删除头指针为head的单链表上的*p结点*/
{ ……. /*请将函数体的代码补充完整*/

}
linklist *get(linklist *head, int i) /*查找单链表中的第i个结点,并返回其地址*/
{linklist *p;
int k;
p=head;k=0;
while(k<i&&p!=NULL)
{p=p->next; k++;}
return p;
}

void main() /*主函数*/
{ linklist *head,*f;
head= /*建立一个单链表,head存储表头指针*/
print(head); /*遍历输出该单链表*/
f= /*查找单链表中的第2个结点,将其地址存储在变量f中*/
if(f!=NULL)
{printf("\nthis is 2 node:%c", ); /*输出第2个结点的值*/
} /*在第2个结点后面插入一个新结点,其值为’w’*/
printf("\n after insert a new node:");
print(head); /*遍历输出该单链表*/
f= /*查找单链表中的第5个结点,将其地址存储在变量f中*/
if(f!=NULL)
{printf("\nthis is 5 node:%c" ); /*输出第5个结点的值*/
} /*删除第5个结点*/
printf("\n after delete a node:");
print(head); /*遍历输出该单链表*/
}

第1个回答  2012-10-18
与你那个差不多,有些地方自己改下就行了

1)创建一个空的顺序表L
(2)依次插入a,b,c,d,e五个元素
(3)在第4个元素位置上插入元素f
(4)删除L的第3个元素
(5)输出顺序表L

#include <stdlib.h>
#include <stdio.h>
#include<malloc.h>
typedef char ElemType;
typedef struct LNode
{ ElemType data;
struct LNode *next;
}LNode ,LinkList;
LinkList * InitList( )
{
LinkList * L=NULL;
L=(LinkList *)malloc(sizeof(LinkList));
L->next=NULL;
return L;
}
void DestroyList(LinkList * L)
{
LinkList *p=L,*q=p->next;
while(q!=NULL)
{
free(p); p=q; q=p->next;
}
free(p);
}
void DispList(LinkList *L)
{
LinkList *p=L->next;
while (p!=NULL)
{ printf("%c",p->data);
p=p->next;
}
printf("\n");
}
void ListInsert(LinkList * L,int i,ElemType e)
{
int j=0;
LinkList *p=L, *s;
while(j<i-1 && p!=NULL)
{ j++; p=p->next; }
if(p==NULL)
return;
else
{
s=(LinkList *)malloc(sizeof(LinkList));
s->next = NULL;
s->data=e;
s->next=p->next;
p->next=s;
}
}
void ListDelete(LinkList * L,int i)
{
int j=0;
LinkList *p=L, *q;
while(j<i-1 && p!=NULL)
{ j++; p=p->next; }
if(p==NULL)
return;
else
{ q=p->next; p->next=q->next; free(q); }
}
void main()
{
LinkList *L=NULL,*pL = NULL ;
int i;
char f;

L = InitList();
printf("Please enter char:\n");
for(i=0; i<5; i++)
{
LinkList *pt=(LinkList *)malloc(sizeof(LinkList));
pt->next = NULL;
scanf("%c",&(pt->data));
getchar();
if(L->next == NULL)
L->next = pt;
else
pL->next = pt;
pL=pt;
}
DispList(L);
printf("Please enter a char:\n");
scanf("%c",&f);
ListInsert(L,4,f);
DispList(L);
ListDelete(L,3);
DispList(L);
DestroyList( L);
}

数据结构(C语言版),求高手解决。。
1.二叉树是度为2的有序树( )【答案】× 2.完全二叉树一定存在度为1的结点( )【答案】× 3.深度为K的二叉树中结点总数≤2k-1( )【答案】√ 4.由一棵二叉树的先序序列和后序序列可以惟一确定它( )【答案】× 5.完全二叉树中,若一个结点没有左孩子,则它必是树叶...

c语言数据结构问题求解
A[0][0]和A[2][2]相差了(2*n+2)个元素,与A[3][3]相差了(3*n+3)个元素,所以,676-644=32,32\/2*3=48,644+48=692,选择c项。满意请采纳呦~

数据结构(c语言版)题目求答案
InitStack(S);InitQueue(Q);while((c=getchar())!='@'){ Push(S,c);EnQueue(Q,c);} while(!StackEmpty(S)){ pop(S,a);DeQueue(Q,b);if(a!=b)return ERROR;} return OK;}

关于数据结构的问题,用C语言描述
1. 设一函数 f(x,y)=(1+A*(e^B\/cosθ)*(1+C*(cosψ)^2),其中θ=(π*x)\/180,ψ=(π*y)\/180,参数A=-0.5,B=-0.4,C=-0.1。x从0变化到89,步长为1,y从0变化到359,步长为1。采用一种数据结构,完成f(x,y)的存储。2.上题的f(x,y)是实数值,请通过线性变化求出g(x,y),要求g(x,y...

一份C语言的数据结构题目,急求答案
第一题;Search (BiTree t,ElemType x){ struct nodee;{BiTree pp;int tag;}s[100];int top; Bitree p;top=0; p=t;while(p!=NULL&&p->p!=NULL){while(p!=NULL&&p->data!=x){top++;s[top].pp=p;s[top].tag=0;p=p->lchild;} if(p!=NULL&&p->data==x){for(i=1...

谁懂数据结构C语言,帮个忙吧,我整了好久都没整好,会的帮我一下谢了
{ int data[MAXSIZE];int last;}SeqList;\/*顺序表的初始化*\/ SeqList *init_SeqList(){ SeqList *L;L=malloc(sizeof(SeqList));L->last=-1;return L;} \/*插入数据*\/ void Insert_SeqList(SeqList *L,int i,int x){ int j;if(L->last==MAXSIZE-1){ printf("full "); \/...

数据结构的马和象问题,用C语言,求帮忙啊。。谢谢,给点思路都行。_百度...
。。25个点都能知道 “马”的步数,然后把“马”走到“象眼”处的“步数”和“象”走到对应“象眼”处的“步数”相加,得到每个“象眼”处的“总步数”。“总步数”最少的就是答案, 对应“象眼” 就是 相遇点。注意 处理一下 边界问题 (“马”在边上,取不到 25个格子时) 就完美了 ...

求数据结构(C语言版)题集实习题答案
huff_node[x2].flag=1;buff_node[n+i].weight=buff_node[x1].weight+buff_node [x2].weight buff_node[n+i].lchild=x1;buff_node[n+i].rchild=x2;} for (i=0;i<n;i++){ cd.start=n;c=i;p=huff_node[c].parent;while(p!=0){ if (huff_node[p].lchild==c)cd.bits[...

数据结构 (c语言版)胡学纲 课后习题 答案谢谢了,大神帮忙啊
数据结构课程第一章部分习题解答 第一章 绪论 1-4.什么是抽象数据类型?试用C++的类声明定义“复数”的抽象数据类型。要求 (1) 在复数内部用浮点数定义它的实部和虚部。 (2) 实现3个构造函数:缺省的构造函数没有参数;第二个构造函数将双精度浮点数赋给复数的实部,虚部置为0;第三个构造函数将...

数据结构c语言版问题
按列为主序存放于一个连续的存储空间中 a[10,20]一列10个元素,那么a[6,2],2表示第三列(前面有0,1),前面两列就是20 第三列6个,得到20+6=26,开始地址为200,则200+26=226

相似回答