第4周实践项目1 建立单链表(非多组织结构)
生活随笔
收集整理的這篇文章主要介紹了
第4周实践项目1 建立单链表(非多组织结构)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
#include <stdio.h>
#include <malloc.h>
typedef int ElemType;
typedef struct LNode //定義單鏈表結(jié)點(diǎn)類(lèi)型
{ElemType data;struct LNode *next; //指向后繼結(jié)點(diǎn)
} LinkList;
void DestroyList(LinkList *&L) //銷(xiāo)毀單鏈表,之所以把這個(gè)銷(xiāo)毀鏈表的函數(shù)放在第一個(gè)是為了要注重使用一下如何這個(gè)使用函數(shù)
{LinkList *p=L,*q=p->next;//每次q指向p的下一個(gè)節(jié)點(diǎn),free(p),直到q為NULL的時(shí)候,當(dāng)循環(huán)體執(zhí)行完的時(shí)候還剩下最后一個(gè)p節(jié)點(diǎn)沒(méi)有freewhile (q!=NULL){free(p);p=q;q=p->next;}free(p);//此時(shí)銷(xiāo)毀最后一個(gè)節(jié)點(diǎn)p
/* LinkList *p=L,*q=L->next;//自己改動(dòng)了一行代碼,功能一樣while(q){free(p);p=q;q=q->next;}free(p); //此時(shí)q為NULL,p指向尾結(jié)點(diǎn),釋放它
*/
}
void CreateListF(LinkList *&L,ElemType a[],int n)//頭插法建立單鏈表
{LinkList *s;int i;L=(LinkList *)malloc(sizeof(LinkList)); //創(chuàng)建頭結(jié)點(diǎn)L->next=NULL;for (i=0; i<n; i++){s=(LinkList *)malloc(sizeof(LinkList));//創(chuàng)建新結(jié)點(diǎn)s->data=a[i];s->next=L->next; //將*s插在原開(kāi)始結(jié)點(diǎn)之前,頭結(jié)點(diǎn)之后L->next=s;}
}
void CreateListR(LinkList *&L,ElemType a[],int n)//尾插法建立單鏈表
{LinkList *s,*r;int i;L=(LinkList *)malloc(sizeof(LinkList)); //創(chuàng)建頭結(jié)點(diǎn)L->next=NULL;r=L; //r始終指向終端結(jié)點(diǎn),開(kāi)始時(shí)指向頭結(jié)點(diǎn)for (i=0; i<n; i++){s=(LinkList *)malloc(sizeof(LinkList));//創(chuàng)建新結(jié)點(diǎn)s->data=a[i];r->next=s; //將*s插入*r之后r=s;}r->next=NULL; //終端結(jié)點(diǎn)next域置為NULL(沒(méi)看賀老的博客之前自己經(jīng)常忽略的一行)
}
void DispList(LinkList *L) //輸出單鏈表
{LinkList *p=L->next;while (p!=NULL){printf("%d ",p->data);p=p->next;}printf("\n");
}
int main()
{LinkList *L1, *L2;ElemType a[8]= {7, 9, 8, 2, 0, 4, 6, 3};CreateListF(L1, a, 8);printf("頭插法建表結(jié)果:");DispList(L1);CreateListR(L2, a, 8);printf("尾插法建表結(jié)果:");DispList(L2);DestroyList(L1);DestroyList(L2);return 0;
}
總結(jié)
以上是生活随笔為你收集整理的第4周实践项目1 建立单链表(非多组织结构)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 欧几里得算法扩展欧几里得算法
- 下一篇: ACM-ICPC国际大学生程序设计竞赛北