数据结构题?

我很懒 2009-11-01 03:25:39
1. 如果采用一运算数栈和一运算符栈来计算由键盘输入的中缀表达式1+((2+3)*4+5)*9/(5-(6+7)*8)#的值,这里运算数栈用来存放计算过程中使用或产生的运算数,运算符栈用来存放尚未用于计算的运算符,那么按照算法,请将当运算数栈第一次在栈顶出现13时各栈中存放的数据情况填入下表。另外,请写出该中缀表达式对应的后缀表达式: .

13
15
8
11
16
18
5
运算数栈

2. 画出稀疏矩阵A的三元组表和十字链表。


3. 已知广义表为((), ‘a’, (2,(‘c’,5,8)));试画出该广义表的存储表示。
a 0 1 2 3 4 5 6 7 8
data 60 56 42 38 12 74 25 20
link 4 3 7 -1 2 8 -1 1 6

4. 在下面数组a中链接存储着一个线性表,其表头“指针”为head==0,可利用空间表第一个元素的“指针”av==5:


a 0 1 2 3 4 5 6 7 8
data 88 56 42 38 78 74 66 20
link 4 2 1 5 6 8 7 3 7
现在依次进行如下操作:1) 在元素56前插入元素78;2)删除元素60;3)删除25;4)在元素56后插入66;5)在元素66前插入88。请问,在进行上面操作后,av== 6 ,并将此时数组a的内容填入下表:


一. 程序填空(22分)
1. 下面是某种线性表类的定义和实现(仅给出了部分操作)。函数DE()是用来判断线性表是否对称(即线性表 满足 , )。试在程序的每一划线部分填入一条语句或表达式, 完成函数DE()。
typedef struct Node {
int data;
struct Node *next, *prev;
}Node, * List;

void InitList (List &L) //初始化线性表L
{
L = (List) malloc(sizeof(Node));
L->next = L; L->prev = L;
}
void DestroyList(List &L) //销毁线性表L
{
Node *p, *q ; q = L->prev;
while(___①_________________){ p = q; q = q->prev; free(p);}
free(L);
}
bool DE(List &L) //判断线性表L对称否
{
Node *p, *q;
② ______________ ;
q = L ->prev;
while(p->data == q->data) {
if (p==q || ③ ________________ ) return TRUE;
else { ④ ________ ; ⑤ _____________ ; }
}
return FALSE;
}
2. 下面是仅给出了部分操作某线性表类的定义和实现。试在程序的每一划线部分填入一条语句或表达式,完成相应的操作。
typedef node {
int elem;
struct node *next;
}node,*LinkListPtr;

typedef struct {
LinkListPtr head,tail;
LinkListPtr curr;
} LinkList;

void InitLinkList(LinkList &L) //初始化线性表
{
L.head = (node *)malloc(sizeof(node));
if(L.head == NULL){cout < <"Insufficient memory available\n" ;exit(0);};
L.tail = L.head; L.curr = L.head;
}
void insert(LinkList &L,int & item) //在表L的当前位置处插入元素item
{
if(L.curr == NULL){cout < <"Current position is not a legal position\n";exit(0); };
node * newnode = (node *)malloc(sizeof(node));
if(newnode == NULL){cout < <"Insufficient memory available\n" ;exit(0);};
newnode->elem=item;
⑥___ ;
⑦ ;
if (L.tail == L.curr) L.tail = L.curr->next;
}

void setFirst(LinkList &L) //将表的当前位置定位于第1个元素
{
⑧ ;
}

int currValue(LinkList &L) //将表的当前位置的元素值返回
{
if(!isInList(L))
{
cout < <"Current position is not a legal position\n";exit(0);
}
return ⑨ ;
}

bool isEmpty(LinkList &L) //判断线性表是否为空
{
⑩ ;
}

bool isInList(LinkList &L) //判断curr是否在表中
{
return (L.curr != NULL) && (L.curr->next != NULL) && (!isEmpty(L));
}

bool find(LinkList &L ,const int & eval) //从表的当前位置开始查找元素eval
{
while (isInList(L))
if ( ⑾ ) return TRUE;
else L.curr = L.curr->next;
return FALSE;
}
...全文
259 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
我很懒 2009-11-05
  • 打赏
  • 举报
回复
没人做题啊
tlx20093A 2009-11-02
  • 打赏
  • 举报
回复
顶!!
lzx258 2009-11-02
  • 打赏
  • 举报
回复
看看
我很懒 2009-11-02
  • 打赏
  • 举报
回复
难道不是数据结构的题吗?
CodeSpy 2009-11-01
  • 打赏
  • 举报
回复
数据结构题?P
xhy_851221 2009-11-01
  • 打赏
  • 举报
回复
up

69,369

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧