国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > C > 正文

C語(yǔ)言之雙向鏈表詳解及實(shí)例代碼

2020-01-26 14:25:58
字體:
供稿:網(wǎng)友

1,雙向鏈表簡(jiǎn)介。

雙向鏈表也叫雙鏈表,是鏈表的一種,它的每個(gè)數(shù)據(jù)結(jié)點(diǎn)中都有兩個(gè)指針,分別指向直接后繼和直接前驅(qū)。所以,從雙向鏈表中的任意一個(gè)結(jié)點(diǎn)開始,都可以很方便地訪問它的前驅(qū)結(jié)點(diǎn)和后繼結(jié)點(diǎn)。一般我們都構(gòu)造雙向循環(huán)鏈表。

2,例子要求:

完成雙向鏈表的插入、刪除以及查找,將學(xué)生管理系統(tǒng)使用的數(shù)組,以雙向鏈表的方式實(shí)現(xiàn),能夠支持無(wú)限制的學(xué)生人數(shù)的增刪改查以及保存。

3,代碼實(shí)現(xiàn)。

#include <stdio.h>#include <string.h>#include <stdarg.h>#include <stdlib.h>typedef struct Student{  char name[20];  int score;  char phoneNum[14];} str_student;typedef struct Node{  str_student data;  struct Node *prior;     //指向前驅(qū)結(jié)點(diǎn)  struct Node *next;     //指向后繼結(jié)點(diǎn)}Node, *DLinkList;// 初始化一個(gè)學(xué)生鏈表DLinkList initDouLinkList(){  Node *L,*p,*r;  char name[20];  char phone[14];  int score;  L = (Node *)malloc(sizeof(Node));  L->next = NULL;  r = L;  r->next = NULL;  while(1)  {    p = (Node *)malloc(sizeof(Node));    printf("input name is out exit,input student name:/n");    scanf("%s",name);    if (strcmp(name,"out")==0)    {      break;    }    strcpy(p->data.name, name);    printf("input student score:");    scanf("%d",&score);    p->data.score = score;    printf("input student phone:");    scanf("%s",phone);    strcpy(p->data.phoneNum, phone);    p->next = r->next;    r->next = p;    r = p;  }  r->next = NULL;  return L;}//添加學(xué)生信息DLinkList insertDouLinkListStuent(DLinkList L,int i,char *name, int score,char *phonenum){  DLinkList p,s;  p = L->next;  int tempi;  for(tempi = 1;tempi < i-1; tempi++)    p = p->next;  s = (Node *)malloc(sizeof(Node));  s->data.score = score;  strcpy(s->data.name,name);  strcpy(s->data.phoneNum,phonenum);  s->next = p->next;  p->next->prior = s;  s->prior = p;  p->next = s;  return L;}// 查找學(xué)生信息int findDouLinkListStudent(DLinkList L,char *name){  DLinkList p;  p = L->next;  int i = 1;  while(p != NULL && (strcmp(p->data.name, name)!=0))  {    ++i;    p = p->next;  }  if(p == NULL)    return 0;  else return i;}// 移除一個(gè)學(xué)生DLinkList removeDouLinkListStudent(DLinkList L,char *name){  int tempi = 1;  DLinkList p;  p = L->next;  int i =findDouLinkListStudent(L,name);  while((tempi++) != i && p != NULL)  {    p = p->next;  }  if(p == NULL)    printf("no list /n");  else if(p->next == NULL)  {    p->prior->next = NULL;    free(p);  }  else  {    p->prior->next = p->next;    p->next->prior = p->prior;    free(p);  }  return L;}// 鋪助打印信息void printfInfo(DLinkList L){  DLinkList p;  p = L->next;  while (p!=NULL)  {    printf("student name %s/n",p->data.name);    printf("student name %d/n",p->data.score);    printf("student name %s/n",p->data.phoneNum);    p=p->next;  }}void main (){  char name2[20]="hanmeimei";  char phone2[14]="13612345678";  DLinkList L =initDouLinkList();  // 2.1 初始化學(xué)生雙向鏈表數(shù)據(jù)  insertDouLinkListStuent(L,1,name2,99,phone2);  printfInfo(L);  // 2.2 查找學(xué)生zhangsan  findDouLinkListStudent(L,'zhangsan');  printfInfo(L);  // 2.3 刪除學(xué)生zhangsan  removeDouLinkListStudent(L,'zhangsan');  printfInfo(L);  // 2.4 添加學(xué)生zengteng  insertDouLinkListStuent(L,9,'zengteng',89,'13643345667');  printfInfo(L);}

以上就是對(duì)C語(yǔ)言雙向鏈表的資料整理,后續(xù)繼續(xù)補(bǔ)充相關(guān)資料,謝謝大家對(duì)本站的支持!

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 华池县| 浦城县| 枣强县| 博爱县| 成安县| 盘锦市| 和平区| 那曲县| 金川县| 桂林市| 东台市| 新源县| 林州市| 四川省| 务川| 通化县| 合山市| 成都市| 邵阳市| 历史| 安平县| 清涧县| 龙门县| 义马市| 黄梅县| 恩施市| 陵水| 龙陵县| 冷水江市| 苍山县| 嵊州市| 锡林郭勒盟| 新沂市| 新龙县| 大竹县| 弥勒县| 镇远县| 巴东县| 城市| 垦利县| 文成县|