当前位置: 代码迷 >> C语言 >> 结构与链表真不好学多亏这几个例题!
  详细解决方案

结构与链表真不好学多亏这几个例题!

热度:256   发布时间:2004-12-02 19:28:00.0
结构与链表真不好学多亏这几个例题!

结构与链表例题

C中结构与链表特别重要,但很难学,不过我完全理解了这几个例子后才感觉自己真正的知道了它的作用。

【程序1】 题目:编写input()和output()函数输入,输出5个学生的数据记录。 1.程序分析: 2.程序源代码: #define N 5 struct student { char num[6];  char name[8];  int score[4]; } stu[N]; input(stu) struct student stu[]; { int i,j;  for(i=0;i<N;i++)  { printf("\n please input %d of %d\n",i+1,N);   printf("num: ");   scanf("%s",stu[i].num);   printf("name: ");   scanf("%s",stu[i].name);    for(j=0;j<3;j++)    { printf("score %d.",j+1);     scanf("%d",&stu[i].score[j]);    }   printf("\n");  } } print(stu) struct student stu[]; { int i,j; printf("\nNo. Name Sco1 Sco2 Sco3\n"); for(i=0;i<N;i++) { printf("%-6s%-10s",stu[i].num,stu[i].name);  for(j=0;j<3;j++)   printf("%-8d",stu[i].score[j]);  printf("\n"); } } main() {  input();  print(); } 【程序2】 题目:创建一个链表。 1.程序分析:            2.程序源代码: /*creat a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef struct list node; typedef node *link; void main() { link ptr,head; int num,i; ptr=(link)malloc(sizeof(node)); ptr=head; printf("please input 5 numbers==>\n"); for(i=0;i<=4;i++) {  scanf("%d",&num);  ptr->data=num;  ptr->next=(link)malloc(sizeof(node));  if(i==4) ptr->next=NULL;  else ptr=ptr->next; } ptr=head; while(ptr!=NULL) { printf("The value is ==>%d\n",ptr->data);  ptr=ptr->next; } } 【程序3】 题目:反向输出一个链表。    1.程序分析: 2.程序源代码: /*reverse output a list*/ #include "stdlib.h" #include "stdio.h" struct list { int data;  struct list *next; }; typedef struct list node; typedef node *link; void main() { link ptr,head,tail;   int num,i;  tail=(link)malloc(sizeof(node));  tail->next=NULL;  ptr=tail;  printf("\nplease input 5 data==>\n");  for(i=0;i<=4;i++)  {   scanf("%d",&num);   ptr->data=num;   head=(link)malloc(sizeof(node));   head->next=ptr;   ptr=head;  } ptr=ptr->next; while(ptr!=NULL) { printf("The value is ==>%d\n",ptr->data);  ptr=ptr->next; } }

[此贴子已经被作者于2004-12-02 19:36:17编辑过]

搜索更多相关的解决方案: 链表  例题  结构  

----------------解决方案--------------------------------------------------------
【程序4】 题目:连接两个链表。 1.程序分析: 2.程序源代码: #include "stdlib.h" #include "stdio.h" struct list { int data; struct list *next; }; typedef struct list node; typedef node *link; link delete_node(link pointer,link tmp) {if (tmp==NULL) /*delete first node*/  return pointer->next; else { if(tmp->next->next==NULL)/*delete last node*/   tmp->next=NULL;  else /*delete the other node*/   tmp->next=tmp->next->next;  return pointer; } } void selection_sort(link pointer,int num) { link tmp,btmp;  int i,min;  for(i=0;i<num;i++)  {  tmp=pointer;  min=tmp->data;  btmp=NULL;  while(tmp->next)  { if(min>tmp->next->data)  {min=tmp->next->data;   btmp=tmp;  }  tmp=tmp->next;  } printf("\40: %d\n",min); pointer=delete_node(pointer,btmp); } }

link create_list(int array[],int num) { link tmp1,tmp2,pointer; int i; pointer=(link)malloc(sizeof(node)); pointer->data=array[0]; tmp1=pointer; for(i=1;i<num;i++) { tmp2=(link)malloc(sizeof(node));  tmp2->next=NULL;  tmp2->data=array[i];  tmp1->next=tmp2;  tmp1=tmp1->next; } return pointer; } link concatenate(link pointer1,link pointer2) { link tmp; tmp=pointer1; while(tmp->next)  tmp=tmp->next; tmp->next=pointer2; return pointer1; }

void main(void) { int arr1[]={3,12,8,9,11};  link ptr;  ptr=create_list(arr1,5);  selection_sort(ptr,5); } 【程序5】 题目:回答结果(结构体变量传递) 1.程序分析:      2.程序源代码: #include "stdio.h" struct student { int x; char c; } a; main() {a.x=3; a.c='a'; f(a); printf("%d,%c",a.x,a.c); } f(struct student b) { b.x=20; b.c='y'; }


----------------解决方案--------------------------------------------------------

谢谢了!!!

printf(stu)

这个表示什么?

我不大明白

能告诉我吗 ?

[此贴子已经被作者于2004-12-02 23:07:00编辑过]


----------------解决方案--------------------------------------------------------
  相关解决方案