以下程序中函数fun的功能是:构成一个如图所示的带头结点的单向链表,在结点的数据域中放入了具有两个字符的字符串。函数disp的功能是显示输出该单链表中所有结点中的字符串。请填空完成函数disp。
#include <stdio.h>
typedef struct node/*链表结点结构*/
{char sub[3];
struct node *next;
}Node;
Node fun(char s) /*建立链表*/
{…… }
void disp(Node *h)
{Node *p;
p=h->next;
while(______)
{printf("%s\n",P->sub); p=______; }
}
main()
{Node *hd;
hd=fun();disp(hd);printf("\n");
}
发布于 2022-05-11 09:54:03
登录后免费查看答案
关注者
0
被浏览
14
1 个回答
推荐阅读
-
以下程序把三个NODETYPE型的变量链接成一个简单的链表,并在while循环中输出链表结点数据域中的数据。请填空。#include <stdio.h>struct node{ int data;struct node *next;};typedef struct node NODETYPE;main(){ NODETYPE a,b,c,*h,*p;a.data=10;b.data=20;c.data=30;h=&a;a.next=&b;b.next=&c;c.next=‘\n’;p=h;while(p){printf(“%d,”,p->data); 【15】______;}printf(“\n”);}
2022-05-11 关注 0 浏览17 1答案
-
函数min()的功能是:在带头结点的单链表中查找数据域中值最小的结点。请填空#include <stdion.h>Struct node{ int iata;Struct node *next;};Int min(struct node *first)/* 批针first为链表头指针 */{ struct nod *p; int m;P=first->next; m=p->data; p=p->next;for(; p!=NULL; p=[20]______next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>next" size=20 type=text>)if(p->data<m) m=p->data;retum m;}
2022-05-11 关注 0 浏览13 1答案
-
现有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中连续的三个结点。struct node{char data;struct node *next; }*p,*q,*r;现要将q和r所指结点交换前后位置,同时要保持链表的连续,以下不能完成此操作的语句是
2022-05-11 关注 0 浏览13 1答案
-
试题四(共15 分) 阅读以下说明和 C 语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明] 函数 sort(NODE *head)的功能是:用冒泡排序法对单链表中的元素进行非递减排序。对于两个相邻结点中的元素,若较小的元素在前面,则交换这两个结点中的元素值。其中,head 指向链表的头结点。排序时,为了避免每趟都扫描到链表的尾结点,设置一个指针 endptr,使其指向下趟扫描需要到达的最后一个结点。例如,对于图 4-1 (a)的链表进行一趟冒泡排序后,得到图 4-1 (b)所示的链表。链表的结点类型定义如下:typedef struct Node { int data; struct Node *next;}NODE;[C 语言函数]void sort(NODE *head){ NODE *ptr,*preptr,*endptr; int tempdata; ptr = head -> next; while (1)/*查找表尾结点*/ ptr = ptr -> next; endptr = ptr;/*令 endptr 指向表尾结点*/ ptr =(2) ; while(ptr != endptr) { while((3) ) { if (ptr->data > ptr->next->data){ tempdata = ptr->data; /*交换相邻结点的数据*/ ptr->data = ptr->next->data; ptr->next->data = tempdata; } preptr =(4) ;ptr = ptr -> next; } endptr =(5) ;ptr = head->next; }}
2022-05-10 关注 0 浏览44 1答案
-
有以下程序#include <stdlib.h>struct NODE{ int num;struct NODE *next; };main( ){ struct NODE *p,*q,*r; int sum=0; p=(struct NODE *)malloc(sizeof(struct NODE)); q=(struct NODE *)malloc(sizeof(struct NODE)); r=(struct NODE *)malloc(sizeof(struct NODE)); p->num=1;q->num=2;r->num=3; p->next=q;q->next=r;r->next=NULL; sum+=q->next->num;sum+=p->num; printf(“%d\n”,sum);} 执行后的输出结果是
2022-05-11 关注 0 浏览22 1答案
-
以下程序运行后的输出结果是 ______ 。 struct NODE { int num; struct NODE *next; } ; main() { struct NODE s[3]={{1, '\0'},{2, '\0'},{3, '\0'}}, *p, *q, *r; int sum=0; s[0].next=s+1; s[1].next=s+2; s[2].next=s; p=s; q=p->next; r=q->next; sum+=q->next->num; sum+=r->next->next->num; printf("%d\n", sum); }
2022-05-11 关注 0 浏览32 1答案
-
有以下结构体说明和变量定义,如图所示,指针p、q、r分别指向一个链表中的三个连续结点。struct node{ int data; struct node *next;} *p, *q, *r;现要将q和r所指结点的先后位置交换,同时要保持链表的连续,以下错误的程序段是
2022-05-11 关注 0 浏览8 1答案
-
有以下程序: #includemain( ) { struct node{int n; struct node*next;} *P; struct node x[3]={{2,x+1),{4,x+2},{6,NULL}}; P= X; printf("%d,",p->n); printf("%d\n",p->next->n); }程序运行后的输出结果是( )。
2022-05-11 关注 0 浏览33 1答案
-
试题四(共15分)阅读以下说明和C语言函数,将应填入 (n) 处的字句写在答题纸的对应栏内。[说明]已知包含头结点(不存储元素)的单链表的元素已经按照非递减方式排序,函数compress(NODE *head)的功能是去掉其中重复的元素,使得链表中的元素互不相同。处理过程中,当元素重复出现时,保留元素第一次出现所在的结点。 图4-1(a)、(b)是经函数compress()处理前后的链表结构示例图。链表的结点类型定义如下:typedef struct Node { int data; struct Node *next;}NODE; [C语言函数]void compress(NODE *head) { NODE *ptr,*q; ptr = (1) ; /* 取得第一个元素结点的指针 */ while ( (2) && ptr -> next) { q = ptr -> next; while(q && (3) ) { /* 处理重复元素 */ (4) = q -> next; free(q); q = ptr -> next; } (5) = ptr -> next;}/* end of while */}/* end of compress */
2022-05-10 关注 0 浏览30 1答案
-
试题二阅读下列程序说明和C代码,将应填入__(n)__处的字句写在答题纸的对应栏内。[程序2说明]本程序中的函数 first_insert() 的功能是在已知链表的首表元之前插入一个指定值的表元;函数 reverse_copy() 的功能是按已知链表复制出一个新链表,但新链表的表元链接顺序与已知链表的表元链接顺序相反;函数 print_link() 用来输出链表中各表元的值;函数 free_link()用来释放链表全部表元空间。[程序2〕#include〈stdip.h〉#include〈malloc.h〉typedef struct node{ int val; struct node *next;} NODE;void first_insert( NODE **p,int v){ NODE *q = (NODE *) malloc( sizeof(NODE)); q -> va1 = v;__(1)__; *p = __(2)__;}NODE *reverse_copy(NODE *p){ NODE *u; for( u = NULL ; p ; p = p ->next ) first_insert(__(3)__); return u;}void print_link( NODE *p ){ for( ;__(4)__) printf ("%d\t" , p -> val); printf("\n");void free_link(NODE*p){ NODE *u; while( p != NULL){ u=p-〉next;free( p );__(5)__;}}void main(){ NODE *link1 , *link2;int i ;linkl = NULL ;for( i = 1;i <= 10 ; i++ ) first insert( &link1,i );link2 = revere_ copy(link1);print_link(link1);freeJink(linkl);print_link(link2);free_link(link2);}
2022-05-10 关注 0 浏览28 1答案